我知道这不起作用,因为变量x在函数返回时被销毁:
int* myFunction()
{
int x = 4; return &x;
}
Run Code Online (Sandbox Code Playgroud)
那么如何正确地返回指向我在函数中创建的东西的指针,以及我需要注意什么?如何避免内存泄漏?
我也用过malloc:
int* myFunction2()
{
int* x = (int*)malloc(sizeof int); *x = 4; return x;
}
Run Code Online (Sandbox Code Playgroud)
你是如何正确地做到这一点的 - 在C和C++中?
你的第二种方法是正确的.您只需要清楚地记录调用者"拥有"结果指针,并负责释放它.
由于这种额外的复杂性,很少为像"int"这样的"小"类型执行此操作,尽管我假设您在这里仅使用了一个int作为示例.
有些人还希望将指向已分配对象的指针作为参数,而不是在内部分配对象.这使得更清楚的是调用者负责释放对象(因为他们首先分配它),但是使调用站点更加冗长,所以这是一个权衡.
| 归档时间: |
|
| 查看次数: |
5116 次 |
| 最近记录: |