Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[6926] Re:c++ vector 생성자 및 소멸자 사용
StarWagon [] 2449 읽음    2015-01-29 17:40
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
:

+ -

관련 글 리스트
6925 c++ vector 생성자 및 소멸자 사용 이준원 2322 2015/01/28
6926     Re:c++ vector 생성자 및 소멸자 사용 StarWagon 2449 2015/01/29
6927         Re:Re:c++ vector 생성자 및 소멸자 사용 2352 2015/02/04
6929             Re:Re:Re:c++ vector 생성자 및 소멸자 사용 남병철.레조 2483 2015/03/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.