jrb*_*rbn 5 c++ memory-management
我有多年的 Java 开发经验,现在我想切换到 C++,我很难理解内存管理系统。
让我用一个小例子来说明情况:
根据我的理解,您可以在堆栈或堆上分配空间。第一个是通过声明这样的变量来完成的:
int a[5]
Run Code Online (Sandbox Code Playgroud)
或者
int size = 10;
int a[size]
Run Code Online (Sandbox Code Playgroud)
相反,如果要在堆上分配内存,则可以使用“new”命令来完成。例如像:
int *a = new int[10]; (notice that I haven't tried all the code, so the syntax might be wrong)
Run Code Online (Sandbox Code Playgroud)
两者之间的一个区别是,如果它在函数完成时分配在堆栈上,那么空间会自动释放,而在另一种情况下,我们必须使用 delete() 显式释放它。
现在,假设我有一个这样的类:
class A {
const int *elements[10];
public void method(const int** elements) {
int subarray[10];
//do something
elements[0] = subarray;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有几个问题:
抱歉提出这样的问题(这对于 C 专家程序员来说可能看起来很愚蠢),但是 C++ 的内存管理系统与 Java 非常不同,我想避免泄漏或代码缓慢。提前谢谢了!