Фактически ошибка сегментации происходит в другой программе, которую я пытался скомпилировать, которая происходит из-за этого поведения.
Мой вопрос:
Это ошибка или моя ошибка?
Воспроизводится любым способом (даже если поле something
является приватным или защищенным), и вот мой пример:
main.cc:
#include <iostream>
class Test {
public:
const char* something = "SOMETHING HERE!!!";
Test(const int& number) : Test(something, number) { }
// XXX: changed `something` to `_something` to make it different
Test(const char* _something, const int& number) {
std::cout << _something << std::endl;
std::cout << number << std::endl; }
~Test() { }
};
int main(int argc, char* argv[]) {
Test te1(345);
Test te2("asdasdad", 34523);
return 0;
}
И вот что происходит при компиляции с помощью:
g++ main.cc -Os -o main
и работает с:
./main
вывод:
[email protected]:~/ $ ./main
A"�~ <-- this is random
345
asdasdad
34523
Но когда я включаю оптимизацию с помощью -O0
или -O1
или -O2
... вывод представляет собой только новую строку:
[email protected]:~/ $ ./main
[email protected]:~/ $
Версия g++:
[email protected]:~/ $ g++ --version
g++ (Raspbian 6.3.0-18+rpi1) 6.3.0 20170516