gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:53:30 24 4
gpt4 key购买 nike

这是我的最终目标:

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

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

在现实生活中...不太可能能够全部查看,因为即使是单色图像也有太多的可能性,并且对于存储而言,这是相同的,即使是小尺寸的图像也会产生令人印象深刻的效果文件量大,硬盘很容易饱和。

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

现在的问题:

由于我在每次迭代中大量使用像素的每个不同值,因此我想将其设置为一个全局常量,该常量将包含每个可能的值。所以它就像一个由 16M 的 unsigned char[3] 数组组成的数组。这提供了大约 50MB 的 RAM 供其使用,因此不会太大而难以管理,最重要的是,一组不必动态生成的常量值和一个不错的(我认为?)增益由于数据被不断使用,因此节省了时间和效率。

问题是这个数组很大,仅仅写入它就占用了很大的空间(~640MB),我想知道这个文件的大小是否是一个问题,当我尝试在调用它时编译应用程序时,我收到分配 xxxx 字节内存不足错误,是否有更好的方法来设置此数组?或者这个想法并不像我想象的那么好,并且有更好的方法来做我想做的事?

在启动时生成数组的内容是我的第二个想法,但它花费了太多时间,这并不有趣,我更喜欢将其花在真实图像生成上。

最佳答案

您不需要这样的数组,尤其是当您似乎想将 i 的最低有效三个字节保留在 pixel_matrix[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的存储变得无用。

关于c - 如何声明一个巨大的常量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40846380/

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