malloc在函数内分配内存问题
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在函数内分配内存问题相关推荐
- 关于调用子函数给主函数指针分配内存
典型的错误例子如下 在这个主函数的指针给子函数传递一个指针,而在子函数中形参有开辟了一块内存,此子函数的指针的内存里存储的地址与主函数是同一地址, 即主函数的指 针和子函数形参的指针都指向同一块内存的 ...
- C语言calloc()函数:分配内存空间并初始化
http://c.biancheng.net/cpp/html/134.html 头文件:#include <stdlib.h> calloc() 函数用来动态地分配内存空间并初始化为 0 ...
- c语言 申请1k内存,怎么解决函数内申请内存,函数外释放的问题
由于不同的编译器和库,其内部关于内存申请释放的实现不同,因此不能直接要求用户指定用某个函数释放内存,必须要单独自己封装一个释放的接口.有两种思路: 一是以指针作为参数得到数组地址,单独设计一个释放的函 ...
- 用c语言为程序分配内存,关于C语言程序的内存分配的入门知识学习
C语言程序的存储区域 C语言编写的程序经过编绎-链接后,将形成一个统一的文件,它由几个部分组成,在程序运行时又会产生几个其他部分,各个部分代表了不同的存储区域: 代码段(Code or Text):代 ...
- 二级指针在子函数中申请内存的两种方式
二级指针:在主函数中申明变量,在子函数中分配内存,有两种方式返回二级指针.在这个过程只有深刻理解了C的函数调用模型,以及指针的内存模型,才能够掌握好. #pragma once #include &l ...
- 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )
文章目录 一.堆内存管理 二.内存描述符 mm_struct 结构体 三.mm_struct 结构体中的 start_brk.brk 成员 一.堆内存管理 Linux 操作系统中的 " 堆内 ...
- malloc()背后的实现原理——内存池
目录 malloc()和free()的分配算法 内存池 池化技术 相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而 ...
- 静态分配内存和动态分配内存
首先,在使用动态分配内存技术前,必须明白自己在做什么,这样做与其它的方法有什么不同,特别是会产生哪些负面影响,天下没有免费的午餐.动态分配内存与静态分配内存的区别: 1) 静态内存分配是在编译时完成的 ...
- malloc函数分配内存失败的原因及解决方法
原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...
最新文章
- Linux 下搭建 WordPress 个人站点
- BLAST引物或靶点特异性
- CYQ.Data V4系列全面开源(2013-08-04)
- 身份证号码的正则表达式及验证详解(JavaScript,Regex)
- mysql物理读和逻辑读,SQL Server中STATISTICS IO物理读和逻辑读的误区
- duilib 自带树形控件的认识
- 限制鼠标在窗体中的移动
- hadoop 学习笔记:mapreduce框架详解
- 给windows 98 客户虚拟机安装VMWare tools
- css权威指南 note2
- access数据库驱动的安装方法
- wsdl2java validate_使用cxf wsdl2java进行客户端证书身份验证
- java md5,md2,md4 加密算法
- 【朝花夕拾】Lint使用篇
- Exp2 后门原理与实践 ——20164316张子遥
- 程序员如何快速上手一个自己不太熟悉的新项目
- 普通运维人员真的就是秋后的蚂蚱吗?
- 机械手臂c语言如何编程,一种串联机械手臂的示教编程方法
- tekton入门-细数tekton用到的那些images
- win7上安装DDK,SDK。。
热门文章
- 处理血压信号_测血压检测健康,8款高品质血压计推荐
- 用计算机用图解法求理论塔板数,用Excel图解法求精馏塔理论塔板数.pdf
- Spring Security Oauth2 (一) 整体流程介绍
- Spring mvc 重定向
- apscheduler Trigger
- javascript DOM 方法
- python setupools
- matlab输入excel高版本,『matlab读取excel指定列』excel中大量数据如何导入matlab当中?超过1000个数据无法一个一个输入...
- python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据
- consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...