gpt4 book ai didi

c++ - 内存释放 C++

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:52 25 4
gpt4 key购买 nike

我显然误解了使用 delete 的内容。为什么这个程序会填满我的内存?

void f(int* x){
x = new int[42];
}

int main(){
while(true){
int* x;
f(x);
delete[] x;
}
return 0;
}

如何从 main 函数中释放在 f 中分配的内存?

最佳答案

您实际上并没有修改外部函数中的 x 变量。
为此,您必须依赖 f 的返回值:

int* f(){
return new int[42];
}

int main(){
while(true){
int* x = f();
delete[] x;
}
return 0;
}

或者通过引用传递变量x:

void f(int*& x){
x = new int[42];
}

int main(){
while(true){
int* x;
f(x);
delete[] x;
}
return 0;
}

或者使用指向指针的指针作为 f 的参数:

void f(int** x){
*x = new int[42];
}

int main(){
while(true){
int* x;
f(&x);
delete[] x;
}
return 0;
}

等等……

关于c++ - 内存释放 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36119432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com