Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:

Ahoj, mám pole pointerů na stukturu a chtěl bych nějak zjistit jeho velikost, google mě vždy odkazuje na klasickej sizeof, ale to mi vrací jinou hodnotu než si myslím, že bych měl dostat. Děkuji.

int nUsers = 4;
User** users = (User**)malloc(sizeof(User*)  * nUsers);
 
Odpovědět 19.12.2015 21:56
Avatar
pcrewik
Člen
Avatar
Odpovídá na Lu Kiss
pcrewik:

Ahoj, veľkosť alokovanej pamäte si musíš ukladať ty, alokovaná pamäť si neukladá koľko jej patrí. A sizeof(users) ti vráti len konštantu (napríklad 4), je to veľkosť koľko miesta potrebuješ na uloženie pointeru users, alebo akéhokoľvek pointera.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +2 19.12.2015 22:02
Avatar
Lu Kiss
Člen
Avatar
Odpovídá na pcrewik
Lu Kiss:

Tak to jsem netušil, jinak je to lepší uchovávat pomocí pointeru nebo pomcí globální proměnné?

 
Nahoru Odpovědět 19.12.2015 22:26
Avatar
pcrewik
Člen
Avatar
Odpovídá na Lu Kiss
pcrewik:

Globalne nie su moc doporučene a nemali by sa použivať, väčšinou sa da tomu vyhnuť. Ale su situácie kedy to nie je zle aj v globálnej pamäti. Dobre je vedieť ako je skutočne vykonávaný C/C++ kód.

 
Nahoru Odpovědět  +1 19.12.2015 22:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.