c/c++ 如何判断一个指针是否已分配内存空间?

有没有办法判断一个指针是否已经分配空间?下面的 p 指针我还没找到有办法可以判断他是否分配空间

int * p;  // 如何判断是否已分配?
int * p1 = nullptr;  // 可通过  if(nullptr == p1) 来判断

对于int * p这种定义的指针变量,没有直接的方法可以判断它是否已经分配了内存空间。
这是因为在C/C++中,指针变量的定义和内存分配是两个独立的操作。只有在指针变量使用new、malloc等进行动态内存分配之后,才会真正指向一块内存空间

没办法判断,只能说初始化的时候指定 NULL,释放了以后也设置为NULL。那么可以用 p == NULL判断

p == NULL

有没有分配空间主要看有没有被初始化,被初始化了就是分配了空间。
第一个没有分配空间;
第二个是已经分配了空间。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7765735
  • 除此之外, 这篇博客: C++实现循环单链表的基本操作中的 最后只剩下头节点和尾节点没有删除,pre 处于尾节点,p 处于头节点,所以循环结束后需要删除两点节点。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void DestroyList(LinkList *&L)
    {
    	LinkList *pre=L->next,*p=pre->next;
    	while (p != L)
    	{
    		delete pre;
    		pre = p;
    		p = p->next;
    	}
    	delete pre;
    	delete p;	
    }