gpt4 book ai didi

c++ - 函数内的动态内存删除

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:51 25 4
gpt4 key购买 nike

这是我的第一篇文章,如果问得不好,请见谅。

基本上我在动态内存方面遇到了麻烦,我想知道是不是我误解了这个概念,或者至少是其中一个功能。好的,所以我正在使用 C++,我需要在主程序循环中管理一个改变大小的数组,但是当我尝试删除内存时,我不断收到堆错误。 (以下是我正在尝试做的事情的简化版本)。

void main(void)
{
//Initialization

//main loop
while(true)
{
int* array;
function(&array);

printf("test %d",array[0]); //basically use the data

delete [] array;
}
}

//in separate file

void function(**int val)
{
*val=new int[size of array] // i pass the size of the array...
//to the function as well
//fill the array with data
return;
}

好的,在这之后我可以读取数据,所以它必须附加到指针“数组”但是为什么它不允许我删除数据,就好像它已经被删除了一样?

如有任何建议,我们将不胜感激。

最佳答案

这不是主要问题,但实际上您的语法错误,

void function(**int val);

应该是:

void function(int **val);

但是您不需要双指针,因为您可以简单地通过引用传递指针:

void function(int *&val);

由此可见你的程序应该是这样的:

int main() // main should return int
{
int *array;
function(array, 5);

printf("test %d", array[0]);

delete [] array;
}

void function(int *&val, int size)
{
val = new int[size];
}

您也不需要 while (true) 循环。

关于c++ - 函数内的动态内存删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900355/

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