草庐IT

do_some_long_calculation

全部标签

c++ - 海森堡 : WinApi program crashes on some computers

求助!我真是无计可施了。我的程序是一个小的个人笔记管理器(谷歌搜索“cintanotes”)。在某些计算机上(当然我不拥有它们)它在启动后立即崩溃并出现未处理的异常。这些计算机没有什么特别之处,只是它们往往配备AMDCPU。环境:WindowsXP、VisualC++2005/2008、原始WinApi。关于这个“Heisenbug”,可以肯定的是:1)崩溃仅发生在Release版本中。2)一旦我删除了所有与GDI相关的内容,崩溃就会消失。3)BoundChecker没有任何提示。4)写日志显示崩溃发生在局部int变量的声明上!怎么可能呢?内存损坏?任何想法将不胜感激!更新:我已经成功

c++ - 将字符串转换为 long long

我正在使用VS2008创建一个C++DLL(非托管)项目,我需要将char*转换为longlong类型。有简单的方法吗?提前致谢:) 最佳答案 最简单的方法是使用std::stringstream(它也是最安全的...)std::stringstreamsstr(mystr);__int64val;sstr>>val;您可能需要针对64位应用程序才能正常工作。C++FAQ 关于c++-将字符串转换为longlong,我们在StackOverflow上找到一个类似的问题:

c++ - enable_shared_from_this(c++0x): what am I doing wrong?

我只是在研究即将推出的新C++标准中的智能指针。但是我没有掌握shared_from_this函数的用法。这是我所拥有的:#include#includeclassCVerboseBornAndDie2:publicstd::enable_shared_from_this{public:std::stringm_Name;CVerboseBornAndDie2(std::stringname):m_Name(name){std::coutp=vbad->shared_from_this();}并在行中抛出std::bad_weak_ptr异常std::shared_ptrp=vbad-

c++ - C/C++ : is it faster to assign a 0 to an unsigned long variable or to xor the variable with itself?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我意识到差异可以忽略不计,但在尝试将unsignedlong清零时哪个更有效?unsignedlongx;...x=0;--OR--x^=x;泰勒

C++ boost::program_options 读取与 getopt_long 兼容的参数

我正在开发现有程序的更新。我正在用boost::program_options替换Posix的getopt_long()。但是我的工作没有按预期进行:我想阅读如下参数:-server=www.example.com-cconfig.txt我尝试了来自boost::program_options::command_line_style的多种可能性,但我找不到可以提供与getopt_long相同的行为的组合。我发现对于参数:-server=www.example.com我需要旗帜:command_line_style::allow_long_disguise|command_line_st

c++ - 在 C++ 中说 "promote everything to floating before calculation"的确定性方式

考虑到我更愿意将我的程序中的数字保留为int或任何整数,用这些数字的浮点等价物进行任意算术运算的最方便的方法是什么?说,我有inta,b,c,d;doublex;我想写x=a/b/c/d+c/d+a;通过将转换放在已解析的运算符树叶子中的任何地方,而不会使表达式变得一团糟x=(double)a/b/c/d+(double)c/d+a;C风格的宏是否可行(是否递归)?是否应该使用新类和重载运算符来完成? 最佳答案 x=a/b/c/d+c/d+a;这是一个相当复杂的表达式。最好给它起个名字:doublecomplex_expressio

c++ - Visual Studio 中的 long long 值

我们知道-2*4^31+1=-9.223.372.036.854.775.807,您可以在longlong中存储的最低值,如这里所述:WhatrangeofvaluescanintegertypesstoreinC++.所以我有这个操作:#includeunsignedlonglongpow(unsigneda,unsignedb){unsignedlonglongp=1;for(unsignedi=0;i为什么显示-9.223.372.036.854.775.808而不是-9.223.372.036.854.775.803?我正在使用VisualStudio2015。

c++ - 什么是 : throw 0 do/mean? 是 "bad"吗?

上下文我遇到了一些代码,像这样:if(Some_Condition)throw0;我用谷歌搜索了一下,发现了其他一些使用那种看起来很奇怪的throw0形式的代码片段。我想有人会这样理解:catch(constint&e){}或者这是一个NULLptr?被捕获为void*?问题这个throw0是做什么的?它在某些方面很特别吗?我通常的偏好是抛出(或派生自)std::exception的东西。所以对我来说这看起来“不好”。它是“坏的”吗? 最佳答案 一般throw可以抛出任何类型,任何你需要用这个类型或者它的基类型来捕获它。所以从技术上

c++ - 编译器错误 "character constant too long for its type"。怎么了?

我有一些我正在尝试处理的代码...#include#includeintmain(){std::cout";std::stringchoice;std::getline(cin,choice);if(choice=='hamburger'||choice=='Hamburger'){std::cout";std::stringopt;std::getline(cin,opt);if(opt=='y'||opt=='Y'||opt=='yes'||opt='Yes'){std::cout这是改编self编写的Bash脚本,是我的第一个C++程序之一。当我编译它时,它出现了这些错误...t

c++ - 为什么 "long int"与 "int"大小相同?这个修改器到底有没有用?

嗯..我有点'虽然像long/short这样的修饰符扩展/减少了创建变量时分配的内存量,但是......#include#definetest_intint#definelong_intlongint#definelong_long_intlonglongintvoidmain(){printf("%i\n",sizeof(test_int));//output4printf("%i\n",sizeof(long_int));//output4.Why?wasn'tImodifiedit'ssize?printf("%i\n",sizeof(long_long_int));//outp