올려주신 코드만 보자면,
: typedef struct Info
: {
:
: std::vector<predicted> Point_ADD;
Point_ADD는 predicted 클래스 인스턴스를 넣어주어야하네요.
pTrack->Point_ADD.push_back(*pline);
코드에는 pline으로 되어 있어서 나는 에러인 것 같습니다.
혹은 구글에서 "Invalid address specified to RtlValidateHeap" 관련으로 검색해 보셔도 좋을 것 같습니다.
- 수정 -
predicted pline; 으로 선언되어 있었네요. ^^;
님이 쓰신 글 :
: 지난번에 올렸으나 아직 해결을 못해 구체적인 사용 지점을 추가하여
: 다시 한번 올립니다. pTrack에 데이터를 삽입을 해야하는데
: 다른 변수들(RSS, Deeps, GDH)은 정확하게 삽입이 되고 있습니다.
: 그러나 Point_ADD에도 데이터를 삽입이 필요하여
:
: 다음과 같은 코드를 pTrack->Point_ADD.push_back(pline); 추가하였습니다만
: 추가하면 에러가 발생하는듯 합니다. 호출스택을 보면 dbgheap.c부분에서
: 나고 있어 찾기가 쉽지 않아 도움을 고수님들께 부탁드립니다.
:
: 이렇게 올리면 보기 힘들것 같아 죄송하지만...
: 작은 도움이나 청하려고 이렇게 올립니다...
:
: 혹시 몰라서 dbgheap.c 캡처도 올립니다.
:
:
:
:
: /////////////////// common_Type.h ////////////////////////
:
: class predicted
: {
: public:
: double m_f64x;
: double m_f64y;
: double m_f64z;
:
: }
:
: typedef struct Info
: {
:
: std::vector<predicted> Point_ADD;
:
: int RSS
: BOOL ACTS;
: double Deeps[2];
: double GDH[2];
:
: Info()
: {
: RSS=0;
: ACTS = FALSE;
: memset(Deeps, 0x00, sizeof(Deeps));
: ZeroMemory(GDH, 0x00, sizeof((GDH));
: }
:
: Info & operator=(const Info& rack)
: {
: RSS = rack.RSS;
: ACTS = rack.ACTS;
: memcpy(&Deeps[0],&rack.Deeps[0],sizeof(Deeps));
: memcpy(&GDH[0],&rack.GDH[0],sizeof(GDH));
:
: return *this
: }
:
:
: }Info
:
:
: ///////////////////////////// cMini.h ////////////////////////
:
:
:
: namespace UTANK
: {
: class cHistory
: {
: public:
: double m_f64X;
: double m_f64Y;
: double m_f64Z;
:
: };
:
:
: class cMini
: {
:
: public:
:
: int m_32Index;
: double m_deeps;
: double m_gdh;
: std::vector<CHistory> m_Hists;
: };
:
: }
:
:
:
: ///////////////////////////////// Airsituaiton.cpp ///////////////////////
:
:
: void:: CAirsituation::Addform(CDA* decode)
: {
:
:
: Info* pTrack = new Info;
:
:
: pTrack -> RSS = decode->m.Track->m_32Index;
:
: pTrack->Deeps[0] = decode->m.Track->m_deeps.GetValue().m_f64D;
: pTrack->Deeps[1] = f64V;
: pTrack->GDH[0] = decode->m.Track->m_gdh.GetValue().m_f64Az;
:
:
: int s32size = decode->m.Track.m_Hits.size();
:
: predicted pline;
:
: if(s32Size == 0)
: {
: for(int i=0; i<s32Size; i++)
: {
:
: pline.m_f64X = 0;
: pline.m_f64Y = 0;
: pline.m_f64Z = 0;
:
: pTrack->Point_ADD.push_back(pline); <------ 에러 추정
:
: }
: }
: else
: {
: for(int i=0; i<s32Size; i++)
: {
:
: pline.m_f64X = decode->m_Track.m_Hists.at(i).m_f64X;
: pline.m_f64Y = decode->m_Track.m_Hists.at(i).m_f64Y;
: pline.m_f64Z = decode->m_Track.m_Hists.at(i).m_f64Z;
: pTrack->Point_ADD.push_back(pline); <----- 에러 추정
:
: }
: }
:
:
: }
:
:
: StarWagon 님이 쓰신 글 :
: : point 라는 클래스나 Info 라는 구조체의 변수들을 보니
: :
: : 기본 대입 연산자로도 원하는 깊은 복사가 될텐데요?
: : 물론 vector도 포함해서...
: : 따라서 대입 연산자를 정의 안해도
: :
: : Info A,B;
: : -- A에 값을 채움 --
: : B=A;
: :
: : B는 A와 동일한 값을 가집니다.
: :
: : 또 한, Info 라는 구조체에 소멸자를 정의 해주지 않아도
: : 기본 소멸자가 호출될 때 vector의 소멸자도 호출 됩니다.
: :
: : 제가 보기엔 구조체의 함수 문제가 아니라
: : 구조체의 사용에 문제가 있는것 같은데...
: :
: : 애러가 발생하는 부분의 코드를 봐야 정확히 알겠네요.
: :
: :
: :
: :
: : 이준원 님이 쓰신 글 :
: : : 안녕하세요 급하게 질문이 있어 고수님들께 질문드립니다.
: : :
: : : 잘 돌아 가는 코드에 아래와 같이 Point_ADD라는 vector를 Info struct에 추가를 하였습니다.
: : :
: : : 그런데 HEAP[Console_dbg.exe]: Invalid address specified to RtlValidateHeap( 003B0000, 021D19C8 )
: : :
: : : 에러가 나고 있습니다. Info() 및 Info & operator 에 추가를 안해서 그런거 같습니다만.. ^^;;
: : :
: : : vector를 사용할때는 생성자 및 소멸자를 잘 작성이 되어야 된다고 들었습니다.
: : :
: : : 혹시 아시는 분 있으시면, 도와주시면 정말 감사하겠습니다...ㅠ.ㅠ
: : :
: : :
: : :
: : :
: : :
: : : class point
: : : {
: : : public:
: : : double m_f64x;
: : : double m_f64y;
: : : double m_f64z;
: : :
: : : }
: : :
: : : typedef struct Info
: : : {
: : :
: : : std::vector<point> Point_ADD;
: : :
: : : int RSS
: : : BOOL ACTS;
: : : double Deeps[2];
: : : double GDH[2];
: : :
: : : Info()
: : : {
: : : RSS=0;
: : : ACTS = FALSE;
: : : memset(Deeps, 0x00, sizeof(Deeps));
: : : ZeroMemory(GDH, 0x00, sizeof((GDH));
: : : }
: : :
: : : Info & operator=(const Info& rack)
: : : {
: : : RSS = rack.RSS;
: : : ACTS = rack.ACTS;
: : : memcpy(&Deeps[0],&rack.Deeps[0],sizeof(Deeps));
: : : memcpy(&GDH[0],&rack.GDH[0],sizeof(GDH));
: : :
: : : return *this
: : : }
: : :
: : :
: : : }Info
: : :
|