我正在制作一个 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
我不知道如何使这项工作。我想分配一块我需要的内存块(bytesPerTable),然后将它组织成所需的二维数组。如果我简单地声明
char arrs[interleaved][rowSize];
然后它可以工作,但它在堆栈而不是堆上。任何人都可以帮忙吗?