Boj s pointery

Tomas Dresler dresler na hw.cz
Středa Srpen 17 13:46:17 CEST 2022


Vracíš pointer, čili adresu v paměti. Pokud ti funkce na tu adresu uloží 
lokální proměnnou a pak skončí, tu oblast paměti přepíše další funkce a 
ztratíš tak původní obsah, ač adresa je stále stejná.

Správný přístup by byl volat tu funkci s pointerem na předem alokovanou 
paměť a délku bufferu nebo využít dynamickou alokaci a vracet poiner z 
malloc či podobné.

Tomáš

On 2022-08-17 13:21, Michal Grunt wrote:
> Tomu nerozumím. Takže když mám ve funkci nějakou kokální proměnou,
> kterou následně vracím tak se vrátí (může se vrátit) něco jiného i
> když je ve funkci jasně dané co se má vrátit?
> 
> st 17. 8. 2022 v 11:48 odesílatel Jan Waclawek <konfera na efton.sk> 
> napsal:
>> 
>> Bez toho aby som sa pokusil pochopit funkciu:
>> 
>> char strTmp[100];
>> 
>> definuje lokalnu premennu na zasobniku (stacku), ktora zanika na konci
>> funkcie, ale
>> 
>> return strTmp;
>> 
>> vracia smernik na tuto premennu, ktora sa zrejme nasledne pouziva, aj 
>> ked
>> zasobnik a tym premenna su/mozu uz byt prepisane naslednym behom 
>> programu.
>> 
>> wek
>> 
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list