我的程序大概是这样的:
struct snode
{
......
};
void main()
{
struct snode *p;
//下面有个循环,循环申请空间和相应的操作
//循环开始
son1(p);
son2(p);
//循环完毕
}
void son1(snode*& p )
{
//在此函数中用new snode,申请空间然后赋给p
//用于存放数据,数据很大,所以申请了较大的空间
}
void son2(snode*& p)
{
//在此函数中delete p
//p=NULL;
}
程序大体是这样子的,这里写的不是很完整,而且我用的是Mfc
按我的理解,原来的申请的空间是释放了,但是在debug时用CTRL+ALT+DEL查看时,发现内存还没有释放,所以执行下面的数据就出现了内存不足?
我的数据是存放链中的,所以delete是也是按链的方式删除释放内存的 有人遇到这问题吗?
在此特请教各位大侠,帮帮小妹,不胜感激!多谢!
struct snode
{
......
};
void main()
{
struct snode *p;
//下面有个循环,循环申请空间和相应的操作
//循环开始
son1(p);
son2(p);
//循环完毕
}
void son1(snode*& p )
{
//在此函数中用new snode,申请空间然后赋给p
//用于存放数据,数据很大,所以申请了较大的空间
}
void son2(snode*& p)
{
//在此函数中delete p
//p=NULL;
}
程序大体是这样子的,这里写的不是很完整,而且我用的是Mfc
按我的理解,原来的申请的空间是释放了,但是在debug时用CTRL+ALT+DEL查看时,发现内存还没有释放,所以执行下面的数据就出现了内存不足?
我的数据是存放链中的,所以delete是也是按链的方式删除释放内存的 有人遇到这问题吗?
在此特请教各位大侠,帮帮小妹,不胜感激!多谢!
解决方案 »
- [求助]关于COM的套间概念适用的场合和对象
- 我的帖子哪去了。谁能出来解释下
- 怎样做一个像google输入框带联想输入?
- vc下opengl局部坐标系和世界坐标怎么才能随时保持一致?
- 'GetVolumeNameForVolumeMountPointA' : undeclared identifier
- 用浏览器控件打开和保存Word的问题
- ATL中怎么在MFC的线程类中触发事件?
- ¥¥¥¥请教:关于VC++操作EXCEL内容的问题¥¥¥¥
- peon领分2
- 必有酬谢的求助
- 急,CSplitterWnd上显示一个图标,100分送.
- 请问高手,c++/vc怎么写接口(interface)!!!!!!!!!!!!
你在调试版本下,就当前这代码,运行后关闭系统,在debug窗口中查看是否有内存泄漏报告。
void son2(snode*& p)
*运算符和&运算符优先级相同,并且符合右结合规则,那么,snode*&p=node 这样的赋值表达式应该怎么理解好呢?在这种情况下,delete p又是什么效果呢?
我也糊涂了……
安全起见,楼主试着改成下面这样看看:
void son2(snode* p)
只有那些生存周期到了但空间没有释放的变量才会到导致内存泄露请问我的理解正确吗?
==这个不会。按照我的理解,内存泄露就是那些没用的变量占了空间,导致有用的变量没空间用
只有那些生存周期到了但空间没有释放的变量才会到导致内存泄露 请问我的理解正确吗?
==正确吧
我在他的博客中,看到说内存越界,我在一个小的DOC类的成员方法中申请了空间给doc类的成员,但这个空间首先是赋给局部变量的,请问这是算不算内存越界?
我的理解是:
从定义上将这应该算是内存越界,但是vc检查不出来,只要我把申请的空间记住了(赋给了全局变量),没有丢失,最终没忘释放,我想,这应该还是可以的,不会导致内存泄露的 我的理解正确吗?