gpt4 book ai didi

c - 在 C++ 中使用指针数组

转载 作者:行者123 更新时间:2023-11-30 21:03:17 25 4
gpt4 key购买 nike

我是这样编码的,但它出现了段错误。

出了什么问题?

int vector_size = 100000000;

float *rows[vector_size];

for (int i=0; i<vector_size; i++) {
rows[i] = (float *)malloc(sizeof(float)*2); // crashed here
// ...
}

最佳答案

您正在尝试分配大量内存。如果您确实需要这么多 float ,那么为每个 float 使用单独的 malloc 可能是一个糟糕的计划。 Malloc 有它自己的开销,因为有可以分配的最小块大小,并且内存管理器还需要跟踪所有这些单独分配的内存区域,更不用说您所持有的指针列表的大小了。/p>

更好的解决方案可能是在单个 block 中为所有 float 分配足够的空间,并将索引作为数组,而不是尝试保留指针列表......

所以...

float *rows = malloc(sizeof(float) * vector_size);

可能是一个更好的起点。

关于c - 在 C++ 中使用指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26055198/

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