在很多情况下我们都会把关于一些内存的操作的步骤给封装起来,这样会带来很大的好处,方便我们使用,下面谈一个经常可能会犯的低级错误。这种情况是假如我想把初始化某一部分的操作封装成这样的函数void Init(char* p) 很有可能我们会这样做:
void Init(char* p) {
p = (char *) malloc(sizeof(char)*MAX);
.........
}
其实这样的做法是错误的,如果这样写的话,你和下面的代码又有什么区别呢?
void Init(int a) { int b = 0; a = b;}

文章讨论了C语言中在函数内部为外部指针分配内存的问题,指出直接分配内存并赋值给指针会导致内存泄漏。正确的做法是通过传入指针的地址,使函数能够修改外部指针的指向,从而避免错误。
最低0.47元/天 解锁文章
910

被折叠的 条评论
为什么被折叠?



