2012-08-05 48 views
0

我的Malloc在我的项目中失败。 Malloc通过其中一个功能运行多次,但由于内存不足而失败。使用选项“/ HEAP:1 [,10]”指定的无效数字“

我想增加我的VC++的堆大小,但它给了我在主题中的上述错误。

有人可以告诉我这是什么问题吗?

Windows server 2003 R2企业版 而我正在使用VC++ 98版本。

我试过一些搜索,但无法得到任何关于如何使用/ HEAP OPTION的决定性结论。 数字应该以MB为单位吗?

message_t* Allocate_momory(MsgType_t msgType, UInt16 dataLength) 
{ 
    // TO DO: Allocate memenory and return the pointer 
    message_t* mes_t; 
    mes_t = (message_t*) malloc(sizeof (message_t)); 
    mes_t->msgType = msgType; 
    mes_t->dataLength = 0; 
    mes_t->clientID = 0; 
    mes_t->usageCount = 0; 
    mes_t->dataBuf = malloc(sizeof (dataLength)); 
    return mes_t; 
} 

是它的工作...但不幸的是没有使用malloc解决我的问题:(!! 这是太多文件一个巨大的工程。 我不能发布的代码,但可以有人指导我如何我应该尝试调试其中的malloc失败

+0

你能发表一些代码吗? – Inisheer 2012-08-05 05:43:53

+0

我想: - 但我不能摆脱error.invalid数字指定选项“/HEAP:11.0” – 2012-08-05 05:51:04

回答

2

/HEAP设置在字节堆大小问题同样的方括号中documentation表示可选参数 - ?你实际上并没有在这些类型所以它会是例如

/HEAP:1073741824 

为1 GB堆,或

/HEAP:1073741824,16777216 

,如果你真的想指定除了堆大小的“提交”参数(你可能没有)。

不幸的是,我不认为这会解决你的真正的问题,这是你的内存不足。您可能有memory leaks,您可以使用诸如valgrind之类的工具来追踪。如果情况并非如此,那么你的设计就会很糟糕,这比修复内存泄漏要困难得多。

+0

是的,它的工作... – 2012-08-05 05:57:50

+0

是的,它的工作......但它不幸地没有解决我的问题与malloc :(!! 这是一个巨大的项目,文件太多 我不能发布代码,但有人可以指导我如何尝试调试malloc失败的问题? – 2012-08-05 05:59:31

+0

+1,尽管你可以也提供了一些建议@ user1566968:当然,在分配更多内容之前请先释放一些内存如果你在使用malloc失败时遇到问题,你可能会同时在内存中保留太多内存。看看某种数据库或其他磁盘存储? – 2012-08-05 06:04:05