gpt4 book ai didi

c++ - 程序启动前断言失败

转载 作者:可可西里 更新时间:2023-11-01 10:29:37 25 4
gpt4 key购买 nike

这是怎么回事?!我修复了一些结构,在我的代码中进行了大量的搜索/替换。然后我完成,一切编译正常,但程序立即崩溃。

这是我的主要功能:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
exit(1);

在所有逻辑上它都不应该崩溃,因为我没有执行任何功能。只有 WinMain(),什么都不做!

什么鬼?为什么它不再给我行号了?它给出了外部包含文件中的位置,而不是我的代码中的行。

我还注意到我的 EXE 大小现在比以前小了 5 倍,这也没有意义,看起来它在某个时候停止编译,但仍然说它已编译!

编辑:这是我从错误中得到的:

File: ... \include\xstring
Line: 1084
Expression: Invalid null pointer

当我在非 Debug模式下运行它时,我得到 First-chance exception at 0x00413a95 ....: 0xC0000005: Access violation reading location 0x00000000.

--

Edit2:找到原因: 我按以下方式初始化了一个全局结构:const StructName VarName = {1, 1, 1}; 但 StructName 结构已更改.

最佳答案

全局和静态对象的构造函数在程序启动之前被调用。 (不过,我不确定这如何与 WinMain() 交互。)

在调试器下运行您的应用程序,看看它是如何崩溃的。

从您添加的描述来看,似乎 std::string 是用 NULL 指针初始化的,这是不允许的。您是否有使用 NULL/0 初始化的全局/静态字符串?当您将变量的类型从 char*(或 char[])更改为 std::string 时,通常会发生这种情况。

关于c++ - 程序启动前断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875384/

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