您的位置:首页 > 其它

malloc 需要注意的事项

2015-06-04 16:33 267 查看
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,"hello world");
}

int main()
{
char *str=NULL;
// str=(char*)malloc(100);    //应该在此处分配空间
getmemory(str);
printf("%s\n",str);

free(str);
return 0;
}


此段程序的目的是在main中定义一个char指针ptr,并将其传入getmemory函数中,传入后,希望分配空间并copy一个字符窜到str中,然后main函数将此字符串输出。

程序的问题在于,malloc在getmemory函数中分配,在这里分配的是为临时分配,当函数结束后分配的空间将无法找到,虽然没有释放掉内存,因此,运行时出现段错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: