为什么传递一个char*给这个方法失败?
Why is passing a char* to this method failing?
我有一个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...
功能(捡起第一次机会异常),但它从未捡起任何东西。
这种事发生过吗?我做错了什么吗?
谢谢。
您需要使用Debug设置构建项目。发布设置意味着启用了优化,而优化使调试变得轻松。
如果没有优化,c++代码中的语句和程序中的机器码块之间的对应关系非常密切。程序比较慢(通常要慢得多),但是调试起来比较容易,因为可以观察到每条语句的操作。
优化器重新排序你的代码,消除变量,内联函数,展开循环,并做各种各样的其他事情来使程序更快。程序更快(通常快得多),但调试起来要困难得多,因为c++代码中的语句和机器码中的指令之间不再存在对应关系。
相关文章:
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 指示 Qi 变换属性失败的适当方法是什么?
- 模板的模板的模板推演失败(中间有继承),有没有更好的方法.
- 有没有一种很好的方法来实现具有默认失败情况的条件类型?
- 从类方法调用命名空间中名为 Same 的函数时,重载解析失败
- 检查 istream::read 和 istream::seekg 失败的最佳方法
- 使用方法失败更改constexpr对象成员
- 将C 方法参数转换为模板参数会因编译错误而失败
- 模拟简单的c ++方法在使用googletest时失败
- NSIS系统::调用-调用方法失败
- 我的复制构造函数导致使用我的类的方法失败.有人能看一眼,告诉我我做错了什么吗
- 矢量擦除方法失败
- 自动键入到自动方法失败.为什么
- 为什么对ColMajor MappedParseMatrix调用.row()方法失败
- 当inotify的IN_DELETE事件发生时,select方法失败
- 如果CImage::Load方法失败会发生什么?
- 基于jobobject调用Java方法失败(无效引用?)
- 在libjvm中定位JNI_GetCreatedJavaVMs方法失败.dylib (Mac OS)
- Tizen Construct() Button 方法失败
- 为什么传递一个char*给这个方法失败?