malloc函数用法可参考:C语言中 malloc函数用法 及 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);
}

转载于:https://www.cnblogs.com/Tang-tangt/p/9338844.html

malloc在函数内分配内存问题相关推荐

  1. 关于调用子函数给主函数指针分配内存

    典型的错误例子如下 在这个主函数的指针给子函数传递一个指针,而在子函数中形参有开辟了一块内存,此子函数的指针的内存里存储的地址与主函数是同一地址, 即主函数的指 针和子函数形参的指针都指向同一块内存的 ...

  2. C语言calloc()函数:分配内存空间并初始化

    http://c.biancheng.net/cpp/html/134.html 头文件:#include <stdlib.h> calloc() 函数用来动态地分配内存空间并初始化为 0 ...

  3. c语言 申请1k内存,怎么解决函数内申请内存,函数外释放的问题

    由于不同的编译器和库,其内部关于内存申请释放的实现不同,因此不能直接要求用户指定用某个函数释放内存,必须要单独自己封装一个释放的接口.有两种思路: 一是以指针作为参数得到数组地址,单独设计一个释放的函 ...

  4. 用c语言为程序分配内存,关于C语言程序的内存分配的入门知识学习

    C语言程序的存储区域 C语言编写的程序经过编绎-链接后,将形成一个统一的文件,它由几个部分组成,在程序运行时又会产生几个其他部分,各个部分代表了不同的存储区域: 代码段(Code or Text):代 ...

  5. 二级指针在子函数中申请内存的两种方式

    二级指针:在主函数中申明变量,在子函数中分配内存,有两种方式返回二级指针.在这个过程只有深刻理解了C的函数调用模型,以及指针的内存模型,才能够掌握好. #pragma once #include &l ...

  6. 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )

    文章目录 一.堆内存管理 二.内存描述符 mm_struct 结构体 三.mm_struct 结构体中的 start_brk.brk 成员 一.堆内存管理 Linux 操作系统中的 " 堆内 ...

  7. malloc()背后的实现原理——内存池

    目录 malloc()和free()的分配算法 内存池 池化技术 相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而 ...

  8. 静态分配内存和动态分配内存

    首先,在使用动态分配内存技术前,必须明白自己在做什么,这样做与其它的方法有什么不同,特别是会产生哪些负面影响,天下没有免费的午餐.动态分配内存与静态分配内存的区别: 1) 静态内存分配是在编译时完成的 ...

  9. malloc函数分配内存失败的原因及解决方法

    原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...

最新文章

  1. Linux 下搭建 WordPress 个人站点
  2. BLAST引物或靶点特异性
  3. CYQ.Data V4系列全面开源(2013-08-04)
  4. 身份证号码的正则表达式及验证详解(JavaScript,Regex)
  5. mysql物理读和逻辑读,SQL Server中STATISTICS IO物理读和逻辑读的误区
  6. duilib 自带树形控件的认识
  7. 限制鼠标在窗体中的移动
  8. hadoop 学习笔记:mapreduce框架详解
  9. 给windows 98 客户虚拟机安装VMWare tools
  10. css权威指南 note2
  11. access数据库驱动的安装方法
  12. wsdl2java validate_使用cxf wsdl2java进行客户端证书身份验证
  13. java md5,md2,md4 加密算法
  14. 【朝花夕拾】Lint使用篇
  15. Exp2 后门原理与实践 ——20164316张子遥
  16. 程序员如何快速上手一个自己不太熟悉的新项目
  17. 普通运维人员真的就是秋后的蚂蚱吗?
  18. 机械手臂c语言如何编程,一种串联机械手臂的示教编程方法
  19. tekton入门-细数tekton用到的那些images
  20. win7上安装DDK,SDK。。

热门文章

  1. 处理血压信号_测血压检测健康,8款高品质血压计推荐
  2. 用计算机用图解法求理论塔板数,用Excel图解法求精馏塔理论塔板数.pdf
  3. Spring Security Oauth2 (一) 整体流程介绍
  4. Spring mvc 重定向
  5. apscheduler Trigger
  6. javascript DOM 方法
  7. python setupools
  8. matlab输入excel高版本,『matlab读取excel指定列』excel中大量数据如何导入matlab当中?超过1000个数据无法一个一个输入...
  9. python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据
  10. consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...