Используется ли malloc/realloc/calloc?
Для программистов на Си.
Как я могу знать, если указатель char *
, например, был инициализирован с помощью malloc
или же realloc
? Я имею в виду такую функцию:
char* func(char** x){
/* need some reallocating of *x but
* *x can be a pointer to const string
*/
}
1 ответ
Решение
Нет портативного способа определить, ссылается ли указатель на статическую или автоматическую переменную или на память, выделенную через *alloc
функции, глядя только на значение указателя. Если вы хорошо знакомы с моделью памяти на вашей платформе, вы можете сделать некоторые догадки, но это все.
В противном случае, если это имеет значение, вам придется отслеживать эту информацию самостоятельно.