社区
C++ 语言
帖子详情
怎么判断一个空间被释放掉了.
zhulinjia
2008-10-26 04:01:17
怎么判断一个空间被释放掉了..
怎么判断一个空间被释放掉了...
...全文
248
26
打赏
收藏
怎么判断一个空间被释放掉了.
怎么判断一个空间被释放掉了.. 怎么判断一个空间被释放掉了...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Super.Jiju
2008-10-29
打赏
举报
回复
[Quote=引用 4 楼 Leejun527 的回复:]
如果能养成好习惯在free(p)之后让p = NULL,以后你自然就知道指针p是否已经释放了。
[/Quote]
正解诶
JackyRao
2008-10-29
打赏
举报
回复
Good programming style is good things to this problem.
xtting_8984313
2008-10-27
打赏
举报
回复
1、写一个宏,所有的删除用这个hong
#SAFE_DEL(P) if(P){delete P; P=NUll}
这样就保障不会有野指针。当然前提是对所有指针正确的初始化。
2、使用引用计数(智能指针)
dreamer_shax
2008-10-27
打赏
举报
回复
记住了,确实应该这样
weishifenke
2008-10-27
打赏
举报
回复
好的习惯要学习,顶
insmile
2008-10-26
打赏
举报
回复
学习
insuya
2008-10-26
打赏
举报
回复
释放之后指针手动指向NULL
之后在根据判断指针是否为空呗
就是自己记着点!!!!
春江花月园
2008-10-26
打赏
举报
回复
[Quote=引用 11 楼 jackzhhuang 的回复:]
楼上各位说的都对。
楼主非要知道某个内存可不可读,可以用这个函数:
IsBadReadPtr()
详见MSDN
[/Quote]
学习了
budweiser
2008-10-26
打赏
举报
回复
[Quote=引用 11 楼 jackzhhuang 的回复:]
楼上各位说的都对。
楼主非要知道某个内存可不可读,可以用这个函数:
IsBadReadPtr()
详见MSDN
[/Quote]
这种方法好像也不是万能的
冰山之海
2008-10-26
打赏
举报
回复
自己写一个new 的重载函数和delete的重载函数,函数体里用一个数组或自己定义一下数据结构把你开辟的内存记录下来,delete的时候又把记录去掉,最后写一个打印就知道自己那些内存没有清理
void* operator new(size_t size)
{
void* p = malloc(size);
//把p的地址记来的,再把size记下来,做一个结构体,把__LINE__ 和__FILE__记下来也行
return p;
}
delete操作同样 删掉自己的相应记录就可以了
kingofice
2008-10-26
打赏
举报
回复
3楼、4楼正解。
如果有很好的,对原有代码不做改变,不付出代价(性能,或者工作量)就能检查内存是否已经被释放过,那么,内存泄漏这个老大难问题早就解决了。
所以,最好的办法是养成习惯,不要出现野指针,切记让new与delete或者malloc与free配对。
冻结
2008-10-26
打赏
举报
回复
再delete一次,会编译错误。
机智的呆呆
2008-10-26
打赏
举报
回复
楼主到msdn 搜跟_CrtIsValidHeapPointer 有关的函数吧~~~~
program2050
2008-10-26
打赏
举报
回复
[Quote=引用 3 楼 wuyu637 的回复:]
int main()
{
int * t = new int[10];
cout < < "hello world" < < endl;
if(t !=NULL)
{
delete []t;
t = NULL;
}
}
一旦释放掉一个指针,就把这个指针赋值为null,
每次释放之前检查指针的值是否为空。
[/Quote]
好习惯
gulangduxing
2008-10-26
打赏
举报
回复
学习ing
jackzhhuang
2008-10-26
打赏
举报
回复
楼上各位说的都对。
楼主非要知道某个内存可不可读,可以用这个函数:
IsBadReadPtr()
详见MSDN
ok208043624
2008-10-26
打赏
举报
回复
[Quote=引用 3 楼 wuyu637 的回复:]
int main()
{
int * t = new int[10];
cout < < "hello world" < < endl;
if(t !=NULL)
{
delete []t;
t = NULL;
}
}
一旦释放掉一个指针,就把这个指针赋值为null,
每次释放之前检查指针的值是否为空。
[/Quote]
顶
fenghuijun135
2008-10-26
打赏
举报
回复
学习
jone33
2008-10-26
打赏
举报
回复
判定你那个对象是否为NULL,如果你是用New申请的就Free它,并将它置为NULL
如果你是用Malloc申请的就Delete它,并将它置为NULL
visame
2008-10-26
打赏
举报
回复
YES
这是一个好习惯
一旦释放掉一个指针,就把这个指针赋值为null,
每次释放之前检查指针的值是否为空。
加载更多回复(6)
Oracle数据库表
空间
整理回收与
释放
操作
前言 在使用Oracle进行录入测试时,我们会制造许多测试数据,而使用删除后表
空间
的高水位依旧无法自动下调,导致出现表
空间
出现空白数据,影响表
空间
性能的同时也占用了过多的存储
空间
。
【linux】文件已经删除,但
空间
未
释放
怎么办
文件已经删除,但
空间
未
释放
怎么办
c语言中
判断
申请的动态内存是否被
释放
了
动态申请内存创建链表,读入一组数据,
判断
释放
与不
释放
前后的指针所指
空间
的数据是否一致,一致就是没有
释放
, 不一致表示已被
释放
,变为垃圾数据。 代码:没有
释放
内存时 //头文件区 #include<stdio.h> #include<string.h> #include<stdlib.h> #include"func.h" typedef struct ListNode { float val; struct ListNode* next; } Node; v
为什么文件删除了但磁盘
空间
没有
释放
?
为什么文件删除了但磁盘
空间
没有
释放
?
指针
空间
的申请与
释放
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回
一个
空指针(NULL)。 关于分配失败的原因,应该有多种,比如说
空间
不足就是一种。 char *Ptr = NULL; Ptr = (char *)malloc...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章