我有以下程序test.cc:
#include <iostream>
unsigned char bogus1[] = {
// Changing # of periods (0x2e) changes output after periods.
0x2e, 0x2e, 0x2e, 0x2e
};
unsigned int bogus2 = 1816; // Changing this value changes output.
int main()
{
std::clog << bogus1;
}
Run Code Online (Sandbox Code Playgroud)
我建立它:
g++ -g -c -o test.o test.cc; g++ -static-libgcc -o test test.o
Run Code Online (Sandbox Code Playgroud)
使用g ++版本3.4.6
我通过valgrind运行它,没有任何报告错误.
但是输出有两个额外的控制字符,如下所示:
....
Run Code Online (Sandbox Code Playgroud)
那是最后的控制-X和控制-G.
如果更改bogus2的值,则会得到不同的控制字符.如果更改数组中的句点数,问题就会消失或发生变化.
我怀疑它是编译器或iostream包中的内存损坏错误.
这里发生了什么?