c语言函数内为外部分配空间问题
来源:互联网 发布:淘宝抢红包软件被骗 编辑:程序博客网 时间:2024/06/05 08:01
在很多情况下我们都会把关于一些内存的操作的步骤给封装起来,这样会带来很大的好处,方便我们使用,下面谈一个经常可能会犯的低级错误。这种情况是假如我想把初始化某一部分的操作封装成这样的函数void Init(char* p) 很有可能我们会这样做:
void Init(char* p) { p = (char *) malloc(sizeof(char)*MAX); .........}
其实这样的做法是错误的,如果这样写的话,你和下面的代码又有什么区别呢?
void Init(int a) { int b = 0; a = b;}
有人说 有区别阿 我分配了内存空间,并且赋值给p了啊? 我们可以这样想一下malloc 以后返回的值不就是一个变量吗?其实和b 是一样的 只不过是一个指针变量而已,其实还是一个变量而已。 那个 Init( char* p) 这里面的p其实只是在外部调用的那个char指针的一个变量拷贝而已,你在函数体对这个变量的赋值是不会对被拷贝的那个char指针变量产生任何影响的,就像很经典的指针传值问题一样。 那麽有人问我该怎么在函数体内对外部指针变量进行空间分配呢? 我们可以参考一下以前经典的指针传值嘛,对指针变量进行操作修改是一样的嘛,聪明的人马上就会想到 加个地址不就完了麻,对 正确的写法如下所示:
void Init(char** p) { *p = (char *)malloc(sizeof(char)*MAX); .............}
这样写才是正确的,而第一种只会产生内存泄漏。请大家不要犯这样低级的错误。
- c语言函数内为外部分配空间问题
- C语言malloc函数为一维,二维,三维数组分配空间
- C语言内分配
- 学ios需要了解的C语言基础知识-10-内外部函数,内外部变量
- 明明白白 c/c++ 函数 参数问题, 函数内部分配空间
- c语言 外部函数
- C语言 内部函数和外部函数问题
- C语言中有关外部函数调用的问题
- C语言:函数堆内存分配问题剖析
- C语言结构体内存空间分配
- C语言内存分配函数
- c语言函数内存分配
- c语言内存分配函数
- C语言内存分配函数
- C语言内存分配函数
- C 语言内存分配函数
- 慕课网c语言学习记录(递归,局部与全局,变量存储类别,内外部函数)
- C语言内存分配问题
- OpenGeoDa:开源空间统计分析软件
- Fundamental I 09 Storage Structure and Relationships
- C++输入输出流总结
- struts学习笔记
- 亚马逊是神马个情况啊,你这样开发源码:Kindle Fire--释放源码啦
- c语言函数内为外部分配空间问题
- 步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门
- SQLProgress 的导出功能源代码出售 Delphi7
- 冒泡排序
- selenium remote control 实例(java code)
- windows phone 数据传递
- T-SQL查询进阶--详解公用表表达式(CTE)
- 2012年学习计划
- 1简述seo细节成就高权重