【发布时间】:2013-10-06 00:50:23
【问题描述】:
我正在设计一个仅适用于存储在内存中的位图的图形库。
由于位图是二维的(x 和 y 或列和行),我可以使用二维数组。
//PIXEL_BIT is a user defined type to store RGB values of a single pixel
PIXEL_BIT buffer[1366][768];
据我了解,C++ 不能很好地处理二维数组。特别是在涉及动态二维数组时。所以我相信,二维数组用作缓冲区(或内存位图)并不是那么酷。
另一种声明缓冲区的方法是:
PIXEL_BIT *buffer = new PIXEL_BIT[1366 * 768];
我认为这种方法更有效。所以我的问题是,如果你要在内存中存储位图,你会使用什么样的缓冲区?将位图存储在内存中的最佳方式是什么(我认为是一块可以随机访问的内存)?
[编辑] 我确实了解堆和堆栈是什么。你可能应该看到这个问题: How do I declare a 2d array in C++ using new?
【问题讨论】:
-
C++ 在哪些方面不能很好地处理数组?我会尝试两者:测量运行时间并比较
-
@jev 我的意思是二维数组不适合这种情况,我说一维数组比二维数组更有效。由于计算机内存是线性的,而二维数组只是一种抽象,因此使用二维数组不会比使用一维数组更有效。
标签: c++ c arrays data-structures buffer