【发布时间】:2011-02-21 17:14:52
【问题描述】:
在 iPad 设备上运行的游戏应用程序存在很多内存不足的问题。所以我正在为我自己的游戏考虑以下解决方案:在应用程序启动之前,我分配所需的空间并在启动时立即释放它。
这似乎工作得很好,让我在应用程序运行时更稳定地解决内存分配问题。你怎么看待这件事?这是一个好方法吗?
例如:
{
size_t size = 30*MB;
NSLog(@"free up %u bytes", size);
size_t allocated = 0;
while(allocated < size && blocksCounter < MAX_BLOCKS) {
const size_t blockSize = 256*KB; // 256K blocks
blocks[blocksCounter] = malloc(blockSize);
if(blocks[blocksCounter]) {
bzero(blocks[blocksCounter], blockSize);
}
else {
NSLog(@"warning empty block at idx %d", blocksCounter);
}
blocksCounter++;
allocated += blockSize;
}
for(int i=blocksCounter-1; i>=0; i--) {
if(blocks[i]) {
free(blocks[i]);
}
}
blocksCounter = 0;
}
【问题讨论】:
-
欢迎来到 SO!花点时间查看FAQ,在“我应该不在这里问什么问题”下。特别是第三点。由于您的问题似乎已经解决了,所以它变得有点主观。
-
感谢斯蒂芬的指点!下次发帖时,我会牢记这一点!但是关于我的帖子,我实际上并不认为它是一个解决方案,希望人们告诉我该怎么做,因为上面的代码是一种解决方法。
标签: ipad ios memory crash ios-4.2