gpt4 book ai didi

c - 在 C 中 malloc'ing 多维数组

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

我正在制作一个 C 函数以集成到 Python 中,它基本上创建一个二维字符数组(每一行都有常数,已知长度),将一些数据读入其中,从中构建一个 numpy 数组,并将其返回到Python 中的调用函数。我不是 C 专家,但我相信为了在退出创建它的函数后将数组保留在内存中,我需要使用 malloc 在堆上分配它。所以我正在尝试这一行:

//rowSize and interleaved are both integers; bytesPerTable is equal to rowSize * interleaved
char arrs[interleaved][rowSize] = (char **)malloc(bytesPerTable * sizeof(char));

这给了我编译器错误

error: variable-sized object may not be initialized

我不确定如何进行这项工作。我想分配一 block 我需要的大小的内存(bytesPerTable),然后将其组织成所需的二维数组。如果我简单地声明

char arrs[interleaved][rowSize];

然后它就可以工作了,但是它在栈上而不是堆上。谁能帮忙?

最佳答案

这样做

char (*arrs)[rowSize] = malloc(bytesPerTable);

数组不能赋值,指针和数组是完全不同的对象。

还有:

  • 不要强制返回malloc
  • sizeof(char) 根据定义为 1

关于c - 在 C 中 malloc'ing 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988838/

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