Ich habe das folgende Programm 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;
}
Ich baue es mit:
g++ -g -c -o test.o test.cc; g++ -static-libgcc -o test test.o
Verwendung von g++ Version 3.4.6
Ich habe es durch valgrind laufen lassen und es wird nichts als falsch gemeldet.
Die Ausgabe enthält jedoch zwei zusätzliche Steuerzeichen und sieht wie folgt aus:
....
Das ist ein Kontroll-X und ein Kontroll-G am Ende.
Wenn Sie den Wert von bogus2 ändern, erhalten Sie andere Steuerzeichen. Wenn Sie die Anzahl der Punkte im Array ändern, verschwindet das Problem oder ändert sich.
Ich vermute, dass es sich um einen Fehler im Compiler oder im iostream-Paket handelt, der den Speicher beschädigt.
Was ist hier eigentlich los?