小例子:汇编涉及'的std :: string`导致Windows错误状态
#include <Windows.h>
#include <string>
int main(int /*argc*/, char* /*argv*/[]) {
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //Behavior the same, with or without.
DWORD err = GetLastError();
std::string str;
return (int)err; //returns 127 iff line above uncommented, 0 iff commented
}
该程序返回127
,相当于ERROR_PROC_NOT_FOUND
( “指定的程序无法找到。”)。请注意,err
设置创建std::string
之前。该程序被编译在调试模式下用MSVC 2017年
这种行为是正常吗?如果没有,我可以得到一些确认(然后,我将提交错误报告)?
我假设的过程启动时在你的过程中遇到的最后一个错误。 – pm100
如果字符串的构造实际上出了问题,那么您将更有可能遇到异常或动态链接器故障。 – cdhowie
如果你注释掉'std :: string str;'你会得到相同的值吗?你在每次运行中也获得相同的价值吗? – NathanOliver