Problém s uvolněním paměti po neúspěšné alokaci – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s uvolněním paměti po neúspěšné alokaci – C / C++ – Fórum – Programujte.comProblém s uvolněním paměti po neúspěšné alokaci – C / C++ – Fórum – Programujte.com

 

S.Salomon0
Newbie
5. 12. 2008   #1
-
0
-

Dobrý den,
potřeboval bych poradit. Jakým způsobem lze uvolnit paměť, pokud funkce malloc() vrátí NULL(není dostatek paměti). Rozumím tomu správně, že v tomto případě zůstane paměť alokovaná až do konce běhu programu? Při testovaní s valgrindem mi to tak vychází. Poradí někdo?



int *p;
int x; // velikost pole

p = (int *) malloc(x * sizeof(int));


Pozn.: Pokud bude x moc velké a funkce malloc vráti NULL, naalokovanou paměť již není možné uvolnit..?

Nahlásit jako SPAM
IP: 89.102.27.–
http://programujte.com/avatari/51.jpg
joe
~ Anonymní uživatel
62 příspěvků
5. 12. 2008   #2
-
0
-

Když malloc() vrátí NULL, tak žádnou novou paměť nealokoval a nemáš co uvolňovat.

Nahlásit jako SPAM
IP: 213.211.51.–
sputnikone+1
Věrný člen
5. 12. 2008   #3
-
0
-

Pokud už umíš malloc, měl by ses naučit něco jako příkaz free. Většina překladačů sice zajistí uvolnění paměti, ale tohle je nutnost u dobrého programátora.

Nahlásit jako SPAM
IP: 82.209.55.–
KIIV
~ Moderátor
+43
God of flame
5. 12. 2008   #4
-
0
-

To sputnikone : pri skonceni programu se proste pamet uvolni.. horsi je to u programu ktere "nikdy" nekonci... tj ruzne sluzby... tam uz se tomu rika Memory leak a je to velice prijemna vlastnost programu ktere sezerou celou ram a pak se zhrouti pulka kompu

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
paul270
Návštěvník
6. 12. 2008   #5
-
0
-

Paměť uvolníš takto:

free((void *) p);

samozřejmě hodnotu pointeru p to nemění, takže bacha, ať pak třeba nechceš zapisovat *p = 5; to by bylo špatné.

Nahlásit jako SPAM
IP: 88.103.71.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Faktorial s alokaci paměti. — založil bergeros

Qt sloty problem s dynamickou alokaci — založil rodinne.baleni.ryze

Problém s pamětí — založil michi

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý