Вы не можете.
Вы можете попытаться выделить память в куче в начале вашей программы и сравнить адрес с указателем, который хотите освободить, но он не будет точным во многих случаях.А то, что вы можете найти и использовать на одной платформе после некоторых исследований ее управления памятью, может не иметь отношения к следующей.
Альтернативный способ - добавить модуль управления памятью в вашу программу, который обернетФункции malloc
, free
и т. Д. Будут отслеживать всю выделенную память и будут вызывать free
, только если указатель появится в его списке.Хотя это может показаться большой работой, чтобы избежать утечек памяти, я нашел это очень удобным много раз.
РЕДАКТИРОВАТЬ Как уже упоминалось в комментариях, лучший способ решить прост - освободить его в месте, где вы знаете, находится он в куче или нет.Я не могу сказать, насколько это легко в вашем случае, но обычно это не должно быть слишком сложно, многие программы / программисты делали это раньше, и я сомневаюсь, что кто-то на самом деле пытался проверить, где была выделена память.