1
6
在我的头顶上:
|
2
2
方法2(将数组分割成行)的优点在于,您可以分步骤执行内存操作,例如,调整图像的大小或对图像进行重组,而不必一次重新分配整个内存块。对于非常大的图像,这可能是一个优势。 单个数组的优点是计算更简单,也就是说,向下一行就可以了
而不是必须引用指针。对于中小型图像,这可能更快。除非您处理的是数百MB的图像,否则我将使用方法1。 |
3
1
我怀疑libpng这样做(样式2)有几个可能的原因:
这种方法的问题(假设每行都是一个分配)是更多的分配/空闲开销,并且可能会鼓励内存碎片化。 除非您有充分的理由,否则请使用样式1(单次分配),并可能四舍五入到您所使用的体系结构的“良好”边界(可能是4、8、16甚至更多字节)。请注意,许多库函数可能会寻找没有填充的样式1—考虑一下您将如何使用它以及将它们传递到哪里。 |
4
0
Windows本身使用方法1的变体。图像的每一行被填充为4字节的倍数,颜色的顺序是b、g、r,而不是更正常的r、g、b。缓冲区的第一行也是图像的底行。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |