Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:19.12.2015 21:56

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:19.12.2015 22:02

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.12.2015 22:02
Avatar
Lu Kiss
Člen
Avatar
Odpovídá na pcrewik
Lu Kiss:19.12.2015 22:26

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:19.12.2015 22:32

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
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.