【问题标题】:invalid number specified with option "/HEAP:1[,10]"使用选项“/HEAP:1[,10]”指定的无效数字
【发布时间】:2012-08-05 05:41:51
【问题描述】:

我的 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 失败的问题?

【问题讨论】:

  • 我正在尝试:- 但我无法摆脱使用选项“/HEAP:11.0”指定的 error.invalid 数字

标签: windows visual-c++ linker heap-memory


【解决方案1】:

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

/HEAP:1073741824

对于 1 GB 堆,或

/HEAP:1073741824,16777216

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

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

【讨论】:

  • 是的,它有效......但不幸的是它没有解决我的 malloc 问题:( !!这是一个包含太多文件的巨大项目。我无法发布代码,但有人可以指导我我应该如何尝试调试 malloc 失败的问题?
  • +1,尽管您也可以提供一些建议。 @user1566968:当然。在分配更多内存之前释放一些内存。如果您在 malloc 失败时遇到问题,那么您正试图同时在内存中保留太多内容。也许是时候看看某种数据库或其他磁盘存储了?
猜你喜欢
  • 2017-08-05
  • 1970-01-01
  • 2016-05-02
  • 2022-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多