一个内存空间分配的问题.

lklll 2006-04-07 10:20:57
int* pointer()
{
return new int(0);
}
这是一个分配int类型内存空间的函数,

我的问题是,一般在函数中定义的变量,在函数结束的时候,就会自动释放空间,这个函数申请的空间不会自动释放掉么?
...全文
233 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aniude 2006-04-08
  • 打赏
  • 举报
回复
------
凡是new 的都要手动释放
netting_fish 2006-04-08
  • 打赏
  • 举报
回复
用new malloc()申请的内存在程序结束时如果没有delete free会不会自动释放掉
pottichu 2006-04-07
  • 打赏
  • 举报
回复
接口!
lklll 2006-04-07
  • 打赏
  • 举报
回复
堆与栈与内存空间是什么关系,有什么区别呢?
YFY 2006-04-07
  • 打赏
  • 举报
回复
new 总是要与 delete 成对使用。

内存分配方式有三种:
(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。
tianrolin 2006-04-07
  • 打赏
  • 举报
回复
需要调用delete释放这个指针
int *a;
a=pointer();
//do_something
delete a;

不过楼主写这个pointer()有什么意义?
sinkileu 2006-04-07
  • 打赏
  • 举报
回复
得,基本完全,下面的同志别再回重复答案了.
妍妍 2006-04-07
  • 打赏
  • 举报
回复
补充一点:楼主说的那种自动释放空间的,都是在栈上分配的,函数结束时,退栈,自然就释放空间了
妍妍 2006-04-07
  • 打赏
  • 举报
回复
这是在堆上动态申请的内存,编译器并无法控制它的生命期,需要程序员决定何时释放这个空间

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧