例:
bool isHeapPtr(void* ptr)
{
//...
}
int iStack = 35;
int *ptrStack = &iStack;
bool isHeapPointer1 = isHeapPtr(ptrStack); // Should be false
bool isHeapPointer2 = isHeapPtr(new int(5)); // Should be true
/* I know... it is a memory leak */
Run Code Online (Sandbox Code Playgroud)
如果我在一个类中有一个成员指针,我不知道指向对象是否是新分配的.然后我应该使用这样的实用程序来知道我是否需要delete指针.
但是:
我的设计尚未完成.所以,我会按照我一直以来的方式编程delete.我要避免垃圾编程
我想知道是否可以检查传递给函数的指针是否由malloc/calloc/realloc分配?
int main(){
struct something o;
struct something *a;
a = malloc(sizeof(struct something));
freeSome(&o);/*This would normally throw an (corruption?) error*/
freeSome(a);/*This is fine*/
}
void freeSome(struct something * t){
if (/*expression here*/){
free(t);
}
}
Run Code Online (Sandbox Code Playgroud)
我明白,通常你会检查是否t == NULL,但我只是想知道是否有可能看到是否已为给定指针分配内存.