gpt4 book ai didi

c++ - Valgrind 声称我在使用 new 时使用 malloc

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:16 25 4
gpt4 key购买 nike

针对现有代码库运行 Valgrind,我收到很多“Mismatched free/delete/delete[]”错误。其中许多是一个问题的重复:它声称在第 XXX 行使用了 delete 操作,而在第 YYY 行使用了 malloc 操作。但是,当我打开它提示的文件并导航到指示的行号时,我发现内存不是用 malloc 分配的,而是用 new 分配的。分配的对象是标准的 ifstreamnew[]delete[] 都没有被使用。

我正在运行 Valgrind 3.5。有谁知道发生了什么事?我看不出这怎么可能是一个真正的错误,但我看到一些人声称 Valgrind 不会出现很多误报,所以我想在抑制它之前有一些信心这是假的。

最佳答案

您没有提供示例程序,所以这是一个 Crystal 球猜测。

您的程序提供了一个operator new 但缺少一个operator delete。以下示例程序产生与您看到的相同的错误消息:

#include <new>
#include <cstdlib>

/*
* Sample program that provides `operator new`, but not `operator delete`.
*/

// minimal version of new for demonstration purpose only
void* operator new(size_t numBytes) {
return malloc(numBytes);
}

int main () {
int *p = new int;
delete p;
}

关于c++ - Valgrind 声称我在使用 new 时使用 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402744/

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