【问题标题】:how to run the loop many times [closed]如何多次运行循环[关闭]
【发布时间】:2013-03-27 09:50:49
【问题描述】:

我正在附加字符串,我循环运行了很多次应用程序崩溃了。它显示错误消息我如何管理错误消息是 malloc: * mmap(size=16777216) failed (error code=12) 错误:无法分配区域 在 malloc_error_break 中设置断点进行调试 * 由于未捕获的异常“NSMallocException”而终止应用程序,原因:“内存不足。我们建议重新启动应用程序。如果您有未保存的文档,请在 Finder 中创建一个备份副本,然后尝试保存。我的代码是` NSMutableString * str = [NSMutableString stringWithCapacity:100000];

int i;
for(i=0;i<1000000;i++){
    [str appendString:@"abcd"];

}`

【问题讨论】:

  • 一个字符串大约 16mb,需要吗?
  • 这很简单;你使用了所有可用的内存。如果你在做一些有意义的事情,有办法为你的程序获得更大的堆,但看起来你只是在测试。我不认为这里真的有问题。您刚刚发现了计算机的局限性。

标签: objective-c


【解决方案1】:

不知道你在实际做什么的细节,是不可能说出来的。

一般来说,当你用完内存时,答案是使用更少的内存。

对于涉及大量数据的操作,您需要转移到一些通过磁盘缓冲的操作。这可以通过任何数量的手段来完成。使用哪一个取决于您尝试做的任何事情的细节。

如果您真的只是将文本附加到缓冲区,则打开文件描述符(或 NSFileHandle)并改为写入。

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 2019-01-18
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多