sab*_*ber 8 c c++ memory memory-management realloc
我realloc在循环的每次迭代中使用,迭代次数for超过10000次.
这是一个好习惯吗?realloc如果被调用很多次会导致错误吗?
Ale*_*ler 13
它不会失败,除非你的内存不足(任何其他分配器都会发生这种情况) - 但如果你设法预先估算所需的存储空间,你的代码通常运行得更快.
通常,最好只执行额外的循环运行以确定存储要求.
我不会说那realloc是不行,但这也不是好事.
我最近偶然发现了这个问题,虽然它已经很老了,但我觉得这些信息并不完全准确.
关于预先确定需要多少字节内存的额外循环,
使用额外的循环并不总是或甚至更好.预先确定需要多少内存需要什么?这可能会导致额外的I/O,这是非常昂贵且不需要的.
关于一般使用realloc,
alloc函数系列(malloc,calloc,realloc和free)非常有效.底层alloc系统从OS分配一个大块,然后根据请求将部分传递给用户.对realloc的连续调用几乎肯定只会增加当前内存位置的额外空间.
如果系统从一开始就为您提供更有效和正确的帮助,您就不希望自己维护堆池.