0

我的 Malloc 在我的项目中失败了。Malloc 通过其中一个函数运行多次,但由于内存不足而失败。

我正在尝试增加我的 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 在哪里失败?

4

1 回答 1

2

/HEAP以字节为单位设置堆大小。此外,文档中的方括号表示一个可选参数 - 您实际上并没有输入这些参数。所以它会是例如

/HEAP:1073741824

对于 1 GB 堆,或

/HEAP:1073741824,16777216

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

不幸的是,我认为这不能解决您的真正问题,即您的内存不足。您可能有内存泄漏,您可以使用valgrind等工具进行跟踪。如果不是这种情况,那么您的设计就很糟糕,这将比内存泄漏更难修复。

于 2012-08-05T05:50:52.700 回答