【发布时间】:2015-05-07 12:04:46
【问题描述】:
我对 vxworks 比较陌生,我正在构建一个 RTP 应用程序,它需要动态分配一些内存。我已将内核配置为 750MB 的内存大小。
我在程序一开始就以 10 个数字块分配内存,每个数字大小为 32MB,但在第 5 或第 6 个块分配之后,我在控制台上收到消息 memPartAlloc: block too big 15912260 bytes (0x10 aligned) in partition 0xe004608 的分配失败。
当有足够的可用内存时,内存分配怎么会失败?我不认为内存已经足够碎片化,以至于在我的程序开始时分配失败,并且根据memShow() 的输出,确实有足够的可用内存来满足请求。
如果内存确实由于任何奇怪的原因而碎片化,有没有办法压缩可用空间并在 Vxworks 中继续?
【问题讨论】:
-
你做了 memShow 1 吗?这将显示每个空闲块的地址和大小...