我正在调查内存泄漏,从我看到的情况来看,问题如下:
int main(){
char *cp = 0;
func(cp);
//code
delete[] cp;
}
void func(char *cp){
cp = new char[100];
}
在//code 注释中,我希望 cp 指向分配的内存,但它仍然是一个空指针,这意味着我从不删除内存。我在做什么?
最佳答案
您正在为 cp
分配已分配内存的值。但是,这是堆栈上的一个变量:main 中 cp
的拷贝! cp
对于你所在的函数是本地的。
你想要的是引用:
void func(char *& cp)
这会将 cp
别名为传入的参数。
关于C++在函数中分配动态内存 - 新手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931218/