首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个有关内存分配的有关问题

2012-05-07 
一个有关内存分配的问题int* test(){int* jnew int(10)return j}int main(){int* ktest()return 0}

一个有关内存分配的问题
int* test()
{
int* j=new int(10);
return j;
}

int main()
{
int* k=test();
return 0;
}
这个程序能正确运行吗?程序中涉及的变量在内存中的位置:是堆还是栈?什么时候清除内存和对象?

[解决办法]
k、j都是局部指针变量,在栈中分配。new int(10)分配的内存在堆中分配,因此需要手动释放他(delete),这里你将堆内存指针传出了函数test并付给了k,因此在操作完这块内存后需要delete k;
[解决办法]
程序结束前,系统不会对你在堆上分配的内存空间做处理
[解决办法]
不会,你又没告诉系统你不用了,等你说了,系统才会处理

热点排行