내 네임 스페이스에서 const 객체를 초기화하는 중 문제가 발생합니다. 내가 초기화를 디버깅 할 경우네임 스페이스에서 const 객체 복원
namespace myNamespace{
const std::string HI = "Hi";
const std::string BYE = "Bye";
inline std::vector<std::string> createHiAndByeVector(){
std::vector<std::string> temp;
temp.push_back(HI);
temp.push_back(BYE);
return temp;
}
const std::vector<std::string> HI_AND_BYE = createHiAndByeVector();
}
, 나는 HI
과 BYE
모두 문자열 리터럴을 할당받을 것을 볼 수있다 : 나는 다음과 같은 네임 스페이스를 가지고있다. 실행은 HI_AND_BYE
의 initialziae로 계속되지만 createHiAndByeVector()
함수에 들어가면 HI
과 BYE
은 더 이상 값을 갖지 않습니다. 그런 다음 push_back()
메서드에서 세그먼트 오류가 발생합니다. 호출 스택을 보면 라인이 표시됩니다 : __static_initialization_and_destruction_0()
. 무슨 일 이니? 내 물건이 건설 된 직후 파괴되고 있습니까?
왜 이렇게 성 가시지 : 'std :: vector const HI_AND_BYE { "안녕", "안녕"};'라고 말할 수 있습니다. –
이러한 모든 정의는 동일한 번역 단위 (.cpp 파일)에 나타 납니까? –
'HI_AND_BYE'에 따라 다른 정적 멤버가 있습니까? 정적 초기화 문제의 종류 – billz