C++在函数中分配动态内存 - 新手问题

标签 c++ memory function dynamic pointers

我正在调查内存泄漏,从我看到的情况来看,问题如下:

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/

相关文章:

c++ - Qt Creator 中“未找到有效工具包”

C++ Boost.serialization 与简单加载/保存

c++ - 应用程序在没有附加调试器的情况下抛出异常

objective-c - 创建 NSManagedObject(大尺寸)。内存警告和应用程序崩溃

c# - 可能的内存泄漏?

Java 内存可见性和 AtomicReference 的

将一维字符串复制到二维数组元素中

c++ - 在 C++ 中将引用作为对象传递?

c - 将矩阵作为参数传递

javascript - 如果其中一个函数未注释,为什么两个函数都不会被调用?