gpt4 book ai didi

c++ - 为什么将 char* 传递给此方法会失败?

转载 作者:行者123 更新时间:2023-11-28 03:50:22 26 4
gpt4 key购买 nike

我有一个 C++ 方法,例如:

bool MyClass::Foo(char* charPointer)
{
return CallExternalAPIFunction(charPointer);
}

现在我在其他地方有一些静态方法,例如:

bool MyOtherClass::DoFoo(char* charPointer)
{
return _myClassObject.Foo(charPointer);
}

我的问题是我的代码在那个时候中断了。它不会退出应用程序或任何东西,它只是从不返回任何值。为了尝试查明问题所在,我使用 Visual Studio 2010 调试器逐句检查了代码,发现了一些奇怪的地方。

当我进入 DoFoo 函数并将鼠标悬停在 charPointer 上时,我实际上看到了调用它所用的值(在本例中为 IP 地址字符串)。但是,当我进入 Foo 并将鼠标悬停在 charPointer 上时,没有显示任何内容,并且外部 API 函数调用永远不会返回(就像它刚刚跨过)并且我的程序恢复它是在调用 DoFoo 之后执行。

我还尝试使用 VS 调试器的 Exception... 功能(以获取第一次机会异常),但它从未获取任何东西。

有人遇到过这种情况吗?我做错了什么吗?

谢谢。

最佳答案

您需要使用调试设置来构建项目。发布设置意味着启用了优化,而优化使调试变得轻而易举。

如果不进行优化,C++ 代码中的语句与程序中的机器代码块之间的对应关系非常密切。该程序速度较慢(通常慢得多)但更容易调试,因为您可以观察每个语句的作用。

优化器会重新排序您的代码、消除变量、内联函数、展开循环,并执行各种其他操作以加快程序速度。该程序更快(通常快得多)但调试起来要困难得多,因为 C++ 代码中的语句与机器代码中的指令之间的对应关系不再存在。

关于c++ - 为什么将 char* 传递给此方法会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720167/

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