- 主题:win10 内存碎片,导致 malloc 失败怎么处理?
malloc是从os拿到大块内存后自己管理的
【 在 llwwwww (Seven at one stroke) 的大作中提到: 】
: 我说的第二部能走通,咋解释
--
FROM 27.91.71.*
不过这个方法太low了,还是应该弄个内存池或者对象池之类的,减少内存碎片
【 在 bn95 的大作中提到: 】
: 现在就是这么搞,终于没事了
:
--
FROM 220.249.11.*
还是你厉害,“分配不了1.2G内存都极为不正常”,经过代码严酷测试这句话真没错。所有,我又仔细查看了日志,发现内存数字前面的“横杠”其实是负号。
结合代码发现是int msize溢出了,导致实际开辟的不是1.2G,而是负1.2G,类似于表达式1024*1024*1024*8的值其实是0,
64位里面,malloc( -1.2G)等于是malloc(17179869182.80G),所以malloc失败。
【 在 xiaoju 的大作中提到: 】
: 无论怎么说,分配不了1.2G内存都极为不正常。我怀疑是size有错或者是野指针破坏了malloc的数据结构。所以说科学计算首选python啊
:
--
修改:bn95 FROM 115.231.149.*
FROM 115.231.149.*
真相了……
【 在 bn95 (本能) 的大作中提到: 】
: 还是你厉害,“分配不了1.2G内存都极为不正常”,经过代码严酷测试这句话真没错。所有,我又仔细查看了日志,发现内存数字前面的“横杠”其实是负号。
: 结合代码发现是int msize溢出了,导致实际开辟的不是1.2G,而是负1.2G,类似于表达式1024*1024*1024*8的值其实是0,
: 64位里面,malloc( -1.2G)等于是malloc(17179869182.80G),所以malloc失败。
: ...................
--
FROM 111.161.240.*
malloc的参数不是size_t么?unsignd的场合传个signed进去应该会有编译警告啊,你们忽略了吧。
【 在 bn95 (本能) 的大作中提到: 】
: 还是你厉害,“分配不了1.2G内存都极为不正常”,经过代码严酷测试这句话真没错。所有,我又仔细查看了日志,发现内存数字前面的“横杠”其实是负号。
: 结合代码发现是int msize溢出了,导致实际开辟的不是1.2G,而是负1.2G,类似于表达式1024*1024*1024*8的值其实是0,
: 64位里面,malloc( -1.2G)等于是malloc(17179869182.80G),所以malloc失败。
: ...................
--
修改:xiaoju FROM 27.91.71.*
FROM 27.91.71.*
这种做法在VS里面是不会有警告的。
【 在 xiaoju 的大作中提到: 】
: malloc的参数不是size_t么?unsignd的场合传个signed进去应该会有编译警告啊,你们忽略了吧。
:
--
FROM 115.231.149.*
保存数据不就是往文件里写吗?为啥还要malloc?而且如果允许用虚拟内存的话64位的系统1.2G也不是什么大事吧?
--
FROM 116.230.161.*