如何声明一个巨大的常量数组

时间:2016-11-28 14:13:30

标签: c arrays const

这是我的最终目标:

我希望能够以任何可能的颜色深度生成给定尺寸的所有可能图像。

从某种意义上来说,并不是很复杂,我主要必须迭代表示图像的数组/矩阵的每个像素,并在给定像素的每个可能值上再次迭代。

在现实生活中......由于单色图像的可能性太大,而且对于存储而言,它甚至不可能全部查看它们,甚至是相同的,甚至是小尺寸的图像会产生大量的文件,硬盘容易饱和。

所以我这样做主要是因为这样做的乐趣,因为我很快就能够访问一个集群,并希望尝试这个旧项目。但是旧的项目使用SFML而且效率不高(同样,终端中的SFML并不是一个好主意)

现在出现问题:

由于我在每次迭代时大量使用每个不同的像素值,我想将它设置在一个全局常量上,该常量将包含一个可能的值。所以它类似于16M无符号char数组[3]。这样就可以使用50MB的RAM,因此不需要管理太大的东西,而且最重要的是,一组不变的值不需要动态生成并且很好(我认为? )不断使用数据,从而获得时间和效率。

问题是这个数组是巨大的,只是让它写了一大块空间(~640MB)并且我想知道这个文件的大小是否有问题,当我尝试在调用它时编译应用程序时,我在内存不足分配xxxx字节时出错,是否有更好的方法来设置此阵列?或者这个想法不如我想象的那么好,并且有更好的方法来做我想要的事情?

在lauch生成数组的内容是我的第二个想法,但是它花了很多时间并没有兴趣,我更喜欢它花在真实的图像生成上。

1 个答案:

答案 0 :(得分:0)

您不需要这样的数组,特别是当您希望保留i pixel_matrix[i]中最不重要的三个字节时。

从您发布的片段中,pixel_matrix[i][0] = (i >> 16) & 0xFF; pixel_matrix[i][1] = (i >> 8) & 0xFF; pixel_matrix[i][2] = i & 0xFF; 的值可以生成为:

pixel_matrix

上面的公式使NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription 的存储无效。