gpt4 book ai didi

c++ - 动态数组分配 C++

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:59 24 4
gpt4 key购买 nike

我知道如果我新建一些数组我必须删除它:

    int *i=new i[10];

delete[] i;

像这样的静态数组呢:

    int i[100];

    int i[]={1,2,3,4};

是否应该删除?

假设下面的代码:

    bool fu()
{
for(int i=0;i<100;i++
{
int j[]={1,2,3,4};
}
return 0;
}

j[] 是离开 RAM(在返回 0 之后;)还是保留在那里并在多次迭代后使 RAM 变满?

因为我想在micro im上编程有点担心。谢谢

最佳答案

what about static array like:

int i[100];
int i[]={1,2,3,4};

should it be deleted?

不... static 数据(当这些定义出现在任何函数范围之外时使用)和基于堆栈的数据(用于函数内的变量)都会自动销毁(如果需要) ) 当程序终止或范围分别退出时。 static 变量的内存不需要由程序显式“释放”——操作系统将在程序终止时回收内存。堆栈内存有点像海滩上的波浪......随着范围的进入和退出,使用(覆盖)相同的内存(想想海滩上的区域)然后自动释放,然后重新使用......

bool fu()
{
for(int i=0;i<100;i++
{
int j[]={1,2,3,4};
}
return 0;
}

这里,j[] 在堆栈上重新创建 - 每次循环可能在相同的地址,尽管 C++ 标准不讨论此类实现细节 - 但它可以通过重新复制重新初始化来自常量(静态)数组的数据,其中存储 {1, 2, 3, 4} 用于此目的。 (如果优化器推断你永远不会改变它,它可能会跳过重新初始化,或者甚至删除堆栈变量并直接访问常量数组值,或者甚至删除常量数组并将访问的特定值移动到机器代码操作码中的立即值 -优化器几乎可以做任何事情,只要它不影响除程序性能以外的任何事情。

关于c++ - 动态数组分配 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14746748/

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