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); }