码迷,mamicode.com
首页 > 其他好文 > 详细

malloc在函数内分配内存问题

时间:2018-07-19 22:56:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:details   var   fun   动态   color   访问   https   bsp   str   

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在函数内分配内存问题

标签:details   var   fun   动态   color   访问   https   bsp   str   

原文地址:https://www.cnblogs.com/Tang-tangt/p/9338844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!