gpt4 book ai didi

c++ - 使用新的内存分配失败

转载 作者:行者123 更新时间:2023-11-30 02:34:16 28 4
gpt4 key购买 nike

我已经使用 operator new 分配了内存。需要分配内存的数据类型是“uint8_t”,我使用“uint32_t”类型作为大小。例如,

ptr = new uint8_t[size];

其中 ptr 是 uint8_t 类型,size 是 uint32_t 类型。

现在,我们遇到了内存崩溃,它指向我们代码中的这种类型的分配,抛出的错误消息是:

“_int_malloc:断言 (unsigned long)(size) >= (unsigned long)(nb) 失败。”

我们的一位团队成员认为 ptr 和大小不匹配是崩溃的原因,我不同意他的看法。

请解释这是否是崩溃的原因,如果是,原因是什么?

此外,请解释我们收到上述错误消息的情况。

最佳答案

size 的类型并不重要:无论它是什么类型,它本质上都是作为参数传递给采用 size_t 的函数。

uint32_t size = 10;
uint8_t *ptr = new uint8_t[size];

这是完全有效的代码,不需要协调 ptrsize 的类型。


您在此行遇到的错误表示内存分配库中存在内部错误。当您的程序在其他地方做了一些破坏程序状态的非法行为时,它可能看起来是由合法代码引起的。

您可以使用一些其他分析工具(例如 valgrind、ubsan 或静态分析器)找到最初的原因。

关于c++ - 使用新的内存分配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34611865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com