【发布时间】:2023-03-25 18:37:01
【问题描述】:
将一个 C++ 函数视为:
A* dum()
{
A* a = new A()
doSomethingOnA()
return a;
}
现在dum() 被称为
A* b;
b = dum();
我的问题是我们是否也需要为b 分配内存?
编辑:如果我这样做:
bool dum(A* a)
{
// A* a = new A() -- Is this needed?
doSomethingOnA()
return 1;
}
而dum被称为
A* b = new A()
dum(b);
【问题讨论】:
-
“分配内存”是什么意思?
-
不,
b是来自dum()的a,因为a指向的是数据,而b将指向同一个地址然后a -
@Borgleader - 我的意思是执行 b= new A()
-
您不想为 b 分配内存,因为 dum() 会这样做。在调用 dum() 之前为 b 分配内存会导致内存泄漏,除非您释放它。
-
@MayankJain 你为什么要使用原始指针和
new()?在 c++ 中通常不需要这样做。你可能对 java 或 c# 的概念感到困惑。
标签: c++ memory-management