读书人

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

发布时间: 2012-05-07 12:40:40 作者: rapoo

一个有关内存分配的问题
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;
[解决办法]
程序结束前,系统不会对你在堆上分配的内存空间做处理
[解决办法]
不会,你又没告诉系统你不用了,等你说了,系统才会处理

读书人网 >C++

热点推荐