Используется ли 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 функции, глядя только на значение указателя. Если вы хорошо знакомы с моделью памяти на вашей платформе, вы можете сделать некоторые догадки, но это все.

В противном случае, если это имеет значение, вам придется отслеживать эту информацию самостоятельно.

Другие вопросы по тегам