나는 다음과 같은 별자리가 있습니다C++ 멤버 배열 초기화되지
derived* instance = new derived();
하지만 수행하여 :
이base* instance = new derived();
_B는이 0x0를 유지를
class base {...};
class derived : public base
{
public:
unsigned int* a;
derived(size_t num = 1) : a(0), _b(0)
{
a = new unsigned int[num];
_b = new unsigned char[num];
}
private:
unsigned char* _b;
}
모든이를 수행하여 괜찮습니다 나중에 _b를 사용하려고하면 오류가 발생합니다.
여기 무슨 일입니까?
업데이트 :이 문제는 윈도우/리눅스 크로스 플랫폼 문제로 인해 발생 된
- 값이 잘못된 포인터로 가득했다.
테스트 케이스 게시 또는 문제가 발생하지 않았습니다. – juanchopanza
그건 너무 이상해서 믿기 어렵습니다. [SSCCE] (http://sscce.org/)를 게시 할 수 있습니까? 이상적으로 예를 들어 붙여 넣기 만하면됩니다. [ideone] (http://ideone.com/) 그리고 그것을 직접보십시오. – Angew
기본 클래스에 이름이 _b 인 데이터 멤버가 있습니까? 기본 클래스 정의를 표시해야합니다. –