在C++中,每个流都有bad一点:
当读取或写入数据时发生错误时,通过对流执行的操作来设置此标志,通常会导致流的完整性丢失.
什么会导致流"失去诚信"并进入bad状态?这与fail状态不同,当输入流尝试将值存储到不能接受所述值的变量(例如尝试将字符串存储到整数变量中)时,通常会发生这种情况.
请注意,此问题是c ++文件坏位的更一般形式,它特定于文件输入流; 这个问题并不完全重复,因为它通常适用于输入和输出流.
我创建了一个名为code_2的AHK脚本,将其编译并放入我的Startup文件夹中,这样每次打开计算机时它都会自动开始运行.
该脚本会检查网站是否有新的更新,每当检测到网站上的更新时,它都会使用UrlDownloadToFile下载这些更新.
起初脚本似乎工作正常,但最近我的脚本运行大约15分钟后,我开始从我的计算机收到以下消息:
C:\ Documents and Settings\Administrator\???????\???\??\code_2.exe:code_2.exe - ??????
???????? 未知的软件异常(0xc00000fd)??? 0x7c92eddc?
?? [??] ????
?? [??] ??????
知道这条消息是什么意思吗?(对不起,这里的中国人,但我认为,如果你知道它的数量这条消息,你应该熟悉的内容.)
无论如何,这是翻译的消息:
C:\ Documents and Settings\Administrator\Start Menu\Programs\Startup\code_2.exe:code_2.exe - 应用程序错误
在未知软件异常(0xc00000fd)发生在位置0x7c92eddc应用.
单击OK以终止程序
单击CANCEL以调试程序
在 Intel 处理器上,由于使用 pi 的 66 位近似值,x87 三角指令(例如 FSIN)的精度有限,即使计算本身精确到 80 位扩展精度浮点运算的完整 64 位尾数。点值。(所有有效输入的完全准确性需要 pi 的 128 位近似值。)英特尔文档中的遗漏在问题引起注意后得到了纠正。
然而,除了《AMD64 架构程序员手册》第 1 卷中提到的内容之外,我找不到有关 AMD x87 三角指令实现准确性的类似详细信息:
6.4.5.1 超越结果的准确性
x87 计算以双扩展精度格式执行,以便超越函数为每种浮点数据类型提供精确到最后一位 (ulp)一个单位的结果。
对于所有有效输入(包括 128 位或更好的 pi 近似值),AMD 的 x87 三角指令实现实际上是否完全精确到扩展精度格式的一个 ULP 之内?与Zen和Zen 2架构(Ryzen 和 EPYC)相关的答案将是理想的。
floating-point trigonometry floating-accuracy x87 amd-processor
据我所知,ARMv7处理器(如Cortex-A9)大多向后兼容旧版ARM架构版本的代码.但是,我已经阅读过有关尝试在Cortex-A8上运行ARM9代码的段错误的报告.
ARMv4/5/6(ARM7TDMI/ARM9/ARM11)代码的哪些部分在ARMv7处理器上不起作用?这些较旧的ARM体系结构版本中存在哪些功能或体系结构特征可能导致为这些版本构建的程序在ARMv7上失败?
arm cpu-architecture backwards-compatibility binary-compatibility
我的程序需要对vector<string>信号处理程序中的a 的内容执行只读访问SIGINT.(另一种方法是使用固定大小的固定长度C字符串数组.)该程序设计为在POSIX环境中运行.
是vector::operator[]和vector::size()异步安全(或信号安全)?
我一直很好奇为什么一个错误会导致编译器生成很长的错误消息列表。以下示例是 a 的元素vector<string>与GCC 4.8.1 下的NULL第 100 行的错误比较的结果main.cpp:
> g++ -g3 -std=c++11 main.cpp functions.cpp
main.cpp: In function ‘int main()’:
main.cpp:100:24: error: no match for ‘operator==’ (operand types are ‘__gnu_cxx::__alloc_traits<std::allocator<std::basic_string<char> > >::value_type {aka std::basic_string<char>}’ and ‘long int’)
if(args[1] == NULL) {
^
main.cpp:100:24: note: candidates are:
In file included from /usr/include/c++/4.8/iosfwd:40:0,
from /usr/include/c++/4.8/ios:38,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from main.h:13,
from main.cpp:12:
/usr/include/c++/4.8/bits/postypes.h:216:5: note: template<class _StateT> bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)
operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) …Run Code Online (Sandbox Code Playgroud)