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