【问题标题】:_CrtSetAllocHook - empty filename and lineNumber arguments_CrtSetAllocHook - 空文件名和 lineNumber 参数
【发布时间】:2020-04-01 21:58:04
【问题描述】:

_CrtSetAllocHook 用于注册具有以下声明的函数:

int MyAllocHook(int allocType, void* userData, std::size_t size, int blockType, long requestNumber,
const unsigned char* filename, int lineNumber);

我注意到,对于来自我的代码的分配,我得到空的文件名和 lineNumber 参数。如何解决?

编辑:

#include <iostream>

int MyAllocHook(int allocType, void* userData, std::size_t size, int blockType, long requestNumber,
const unsigned char* filename, int lineNumber)
{
    return 1;
}

int main()
{
    _CrtSetAllocHook(MyAllocHook);
    void* ptr = malloc(128);
    if (ptr)
    {
        free(ptr);
    }
    system("pause");
    return 0;
}

我在 MyAllocHook 中设置了一个断点。

【问题讨论】:

标签: c++ c visual-studio visual-c++


【解决方案1】:

对“malloc”做一个定义,看看它是否给你

#define malloc(s)          _malloc_dbg(s, _NORMAL_BLOCK,` __FILE__, __LINE__)

一行

如果不在任何包含之前添加“#define _CRTDBG_MAP_ALLOC”(最好在项目设置中添加 _CRTDBG_MAP_ALLOC 作为预处理器符号的一部分)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2013-07-18
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多