Turbo C a (char*)
HackForum

| | |  |  | Opět zdravím, zajímalo by mě, jak tento stařičký kompiler (Turbo C 2.01) ukládá (char *). Chtěl bych získat přesnou fyzickou adresu. Myslel jsem si, že se ukládá do prom:[ds], kde prom je třeba
 char *prom = (char*)0x7000Pokud udělám:
 char *some = (char*)0x7000;
je potom fyzická adresa some:[ds], například ds je 0x500, potom je fyzická adresa proměnné some přesně 0x7500. Tohle mi funguje.
 
 Problém nastává v této chvíli:
 
 char *some = (char*)malloc(512);
 some:[ds] neukazujena začátek stringu, jak jsem původně očekával.
 
 char *some = (char*)malloc(512);gets(some);
 printf("%s", some);
 
funguje bezproblémově, ale chtěl bych zjistit přesnou fyzickou adresu pointeru na char, alokovaného přes fci malloc. Mýlím se, že to je some:[ds]? Myslím si že ano. Jaká je tedy správná fyzická adresa?
 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 30.7.2008 10:54 | 
 | 
 | 
 | 
| | |  |  | resp. jak ji zjistit? 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 30.7.2008 10:55 | 
 | 
 | 
 | 
| | |  |  | aha, mám pošahanej malloc(), dobrý no. App byla na 0x600 a malloc alokoval 512 bajtu od 0x500 po 0x700, tim paem se prekryla app a spadla :/ 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 30.7.2008 14:39 | 
 | 
 | 
 | 
| | |  |  | 1. mam pocit, ze vubec nechapes adresovani pameti v real modu (segmenty, paragrafy, offsety). 2. obsah pointeru se lisi podle jeho typu (near/far/huge, pametovy model), pokud s nim potrebujes nejak carovat, tak pouzij far pointer a makra MK_FP, FP_SEG, FP_OFF.
 
 (odpovědět)
 |  | | prc | 213.211.51.* | 31.7.2008 13:53 | 
 | 
 | 
 | 
| | |  |  | te povidam ze uz sem to vyresil, ok? :D, vim co to je far a huge, vim co je to pametovy model, jen sem mel blbe nastavenej malloc(), to je vse x) 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 31.7.2008 13:58 | 
 | 
 | 
 | 
| | |  |  | promin, ale z toho dotazu je evidentni, ze nevis. pockame par mesicu az prijdes na to, o cem jsem mluvil :) 
 (odpovědět)
 |  | | prc | 213.211.51.* | 31.7.2008 22:04 | 
 | 
 | 
 |