gpt4 book ai didi

c++ - 动态内存分配 C++

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:11 27 4
gpt4 key购买 nike

我有以下动态分配的数组

int capacity = 0;
int *myarr = new int [capacity];

如果我这样做会发生什么:

for (int i = 0; i < 5; ++i) 
myarr[++capacity] = 1;

如果 for 循环执行次数超过 5 次,是否会导致错误?它适用于小数字,但我想知道这是否是一种错误的方法。

最佳答案

您正在将内存设置在数组边界之外。这可能会覆盖程序另一部分正在使用的内存,这是未定义的行为。要解决此问题,您应该像这样声明您的数组:

int* myArray = new int[5];

这样你就不会超出数组的边界进行分配。

但是,最好使用std::vector。它将通过管理内存本身来防止这种情况的发生。您可以像这样将项目添加到 std::vector:

Vector.push_back(myItem);

你可以像这样声明一个整数 vector :

std::vector<int> Vector;

您可以阅读有关 std::vector 的更多信息 here .

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

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