Здравствуйте, Аноним, Вы писали:
А>Так вот, память выделяется нормально и указатель возвращается в main, но после команды free указатель ptr не равен нулю. Почему?
Во-первых
free(ptr);
Во-вторых аргумент free не обнуляется. Если тебе так нужен ноль — то обнули указатель вручную:
Hello, !
> из ф-ции main() вызывается статический метод класса:
> main () > { > char* ptr = PT::MakeAllocation(); > free ptr; > }
> метод имеет вид:
> char* PT::MakeAllocation(void) > { > return (char*) malloc(1); > }
> Так вот, память выделяется нормально и указатель возвращается в main, но > после команды free указатель ptr не равен нулю. Почему?
И не должен быть равен. В задачи free не входит обнуление указателя. А память освобождается как и положено...
Хочешь чтоб он был NULL делай это ручками.
Здравствуйте, Аноним, Вы писали:
А>из ф-ции main() вызывается статический метод класса:
А>main () А>{ А> char* ptr = PT::MakeAllocation(); А> free ptr; А>}
А>метод имеет вид:
А>char* PT::MakeAllocation(void) А>{ А> return (char*) malloc(1); А>}
А>Так вот, память выделяется нормально и указатель возвращается в main, но после команды free указатель ptr не равен нулю. Почему?
А разве — free (void *) присваивает высвобожденому указателю NULL ,
Например delete высвобождает память , но значение самого указателя не меняет на NULL . Может и free (void *) поступает так же .