关于内存分配的一个小疑问

beyonddream2008 2009-04-02 11:08:16
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *getmemory(int);
int main()
{
int num=10;
char *ptr=NULL;
ptr=getmemory(num);
strcpy(ptr,"hello");
printf("%s\n",ptr);
free(ptr);
return 0;
}
char *getmemory(int num)
{
char *temp=NULL;
temp=(char *)malloc(sizeof(char)*num);//在这里申请的堆空间是由free 来释放吧,可是在这个局部函数结束的时候不会释放申请空间吗?
return temp;
}
...全文
45 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
windless0530 2009-04-02
  • 打赏
  • 举报
回复
要理解指针的意义,其实就是记录一个地址。
getmemory函数内部只有一个指针temp,无论temp分配了多大内存,这片内存都不在函数内部,只是把内存首地址给了temp而已。所以函数退栈根本不会清空这一片内存。
traceless 2009-04-02
  • 打赏
  • 举报
回复
不会释放,因为malloc是在堆上操作的,局部函数结束只会从栈上弹出局部函数的里变量、函数参数以及函数地址

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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