【发布时间】:2013-08-22 22:53:05
【问题描述】:
我在 C 中有一堆多维数组。
它们看起来像这样:(它们是字符,因为 c 中的 int 占用 4 个字节的内存,而不是 1 个字节用于不用作字符串的字符)
char booting[96][25] = {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x06,0x7e,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} ... .. ..
它们有 2400 个字符长,我有很多。 如果我对其中几个这样做,它可以正常工作,我可以通过以下方式访问它们:
char current_pixel = booting[34][2];
但是在像这样定义了 9 或 10 个数组之后,虽然编译正常,但在运行时我得到了 StackOverflow 错误。
问题是:有什么更好的方法可以将它们分配到堆上并且仍然像堆栈上的普通数组一样继续访问它们?
ps。我环顾四周,但仍然没有找到我想要的东西。感谢您对我的包容!
【问题讨论】:
-
char (*booting)[25] = calloc(96,sizeof *booting); -
大多数编译器都有增加堆栈大小的方法。如果您真的想堆分配它们,那么问题是:它们是否都具有相同的形状或所有维度的大小都不同?
-
它们的结构和大小相同,只是数据不同
标签: c arrays pointers multidimensional-array