奇怪的 SDL 内存使用情况取决于每像素位数
我有一个非常简单的 SDL 程序,仅使用 1MB 内存(每像素 32 位)、2.4MB(每像素 24 位)、1.9MB(每像素 16 位)和 1.4MB(每像素 8 位)。这种奇怪的内存使用情况是怎么回事?为什么每个像素最多的位数占用最少的内存?
C++ 海湾合作委员会
感谢
I have a very simple SDL program that uses only 1MB of memory with 32 bits per pixel, 2.4MB with 24 bits per pixel, 1.9MB with 16 bits per pixel, and 1.4MB with 8 bits per pixel. what is with this strange memory usage? why does the most bits per pixel take up the least amount of memory?
C++
GCC
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许是内部转换缓冲区。如果您的表面 bpp 与您的硬件表面不匹配,您可能需要将完整缓冲区存储在内存中,而 SDL 可能能够直接使用该表面。这只是一个随意的猜测。
但是,在顶部或任务管理器中查看进程可能不是了解内存使用情况的最佳方法。如果您使用的是 Linux,您可以尝试使用 valgrind 等工具来很好地了解内存的去向。
Perhaps internal conversion buffers. If your surface bpp doesn't match your hardware surface you may need to store the full buffer in memory, whereas SDL may be able to use that surface directly otherwise. This is just a guess offhand.
But looking at a process in top or task manager may not be the best way to get a handle on what's using memory. If you're on Linux you can try a tool such as valgrind to get a very good idea of where memory is going.