我知道这行不通,因为变量 x 在函数返回时被销毁了:
int* myFunction()
{
int x = 4;
return &x;
}
那么我如何正确地返回一个指向我在函数中创建的东西的指针,我需要注意什么?如何避免内存泄漏?
我也用过malloc:
int* myFunction2()
{
int* x = (int*)malloc(sizeof int); *x = 4; return x;
}
你如何正确地做到这一点 - 在 C 和 C++ 中?
最佳答案
对于 C++,您可以使用智能指针强制执行所有权转移。 auto_ptr
或 boost::shared_ptr
是不错的选择。
关于c++ - 返回指向函数中声明的数据的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320551/