gpt4 book ai didi

c++ - 这是缩小数组的有效方法吗?

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

我想将一个大小为 N 的数组缩小为一个大小为 M 的数组,而不需要不必要的来回复制。以下有效吗?我尝试执行代码并且它有效。但我想知道这是否正确且一般而言是否与编译器无关。

int main(int argc, char* argv[]) {
srand(time(NULL));
int N = atoi(argv[1]);
int M = atoi(argv[2]);
double* a = new double[N];
double RANDMAX = RAND_MAX;
std::cout << "Displaying 'a'..." << std::endl;
for (int k=0; k<N; ++k) {
a[k] = rand()/RANDMAX;
std::cout << a[k] << std::endl;
}
double* b = new double[M];
b = a;
delete [] a;
std::cout << "Displaying 'b'..." << std::endl;
for (int k=0; k<M; ++k) {
std::cout << b[k] << std::endl;
}
delete [] b;
}

最佳答案

    b = a;
delete[] a;

在这是 UB 之后使用 ba,因为 b 指向与 a 相同的数组/位置>。它们在赋值后代表同一个数组。因此 delete[] b; 也是 UB,因为您删除了数组两次。

关于c++ - 这是缩小数组的有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115247/

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