您好,欢迎来到微智科技网。
搜索
您的当前位置:首页C++中在子函数中动态分配内存

C++中在子函数中动态分配内存

来源:微智科技网
C++中在子函数中动态分配内存 2010-03-30 17:23

C++中动态分配指针时,很容易碰到的问题是:子函数中分配的动态数组,在子函数外部无法访问。跟

踪变量发现:传入的指针变量,在分配内存后不是指向源地址。

问题出现。有一种解决办法:就是使用指向指针的指针或者是指针型的引用,作为参数

传入函数中。这样就能够访问在子函数种动态分配的内存。问题解决。 void GetMemory(char *p, int num) {

p = (char *)malloc(sizeof(char) * num); }

这里犯了值传递的错误,虽然p是指针,但对于p本身来说,这里还是值传递.即函数生成了个值

和p相同的char*临时变量,为这个临时指针分配了空间,而p并没有改变. 所以,可以把p改成引用传递,char *&p.

#include #include

void GetMemory(char *&p, int num) {

p = (char *)malloc(sizeof(char) * num); }

//void GetMemory(char **p, int num) //{

// *p = (char *)malloc(sizeof(char) * num); //} 也可以

void main(void) {

char *str ;//如果将指针设为NULL,就不能赋值了

GetMemory(str, 100); //GetMemory(&str,100);

strcpy(str, \"hello\");

printf(\"%s\为了验证加的 free(str); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务