malloc在函数内分配内存问题
Posted tang-tangt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了malloc在函数内分配内存问题相关的知识,希望对你有一定的参考价值。
malloc函数用法可参考:C语言中 malloc函数用法
代码:
void fun(char * p)
{
p=(char *)malloc(100);
}
void main()
{
char *p;
fun(p);
char s[]="hello world";
strcpy(p,s);
cout<<p<<endl;
}
找出代码错误之处。
不能通过这样的方式申请动态内存,申请的内存首地址无法通过形参传递出去(形参只做实参的值复制)。
VS2010下运行,出现错误:Run-Time Check Failure #3 - The variable ‘p‘ is being used without being initialized.
将main函数中 char *p; 修改为 char *p=NULL; 依旧是错误的。
【XXXXX中的 0x100cd2e9 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突】
要正确申请动态内存,可将程序修改为:
void main()
{
char *p;//char *p=NULL;
p=(char *)malloc(100);
char s[]="hello world";
strcpy(p,s);
cout<<p<<endl;
free(p);
}
以上是关于malloc在函数内分配内存问题的主要内容,如果未能解决你的问题,请参考以下文章