PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/10/08 18:25:25
Name 고지를향하여
Subject C++ vector 메모리 질문드립니다.
스타 커뮤니티에 자꾸 C 질문 올라와서 이상하지만 ㅠ
다른데 쓸만한데가 없어서 죄송하지만 질문 좀 드릴게요;;

예를 들어 struct A {int a; std::vector<int> b; }

이런씩으로 선언해서
이 구조체로 struct A var1; 선언해서
var1.b.push(1);
var1.b.push(2);
var1.b.push(3);

이런씩으로 백터에 값 넣어놓고
struct A var2; 선언한 후
var1 = var2; 를 대입하면

var2에 vector 값 없으니까 var1.b 백터 초기화 될껀데
그럼 기존에 있던 var1.b vector 로 쓰고 있던 메모리는 자동으로 초기화 되나요?

미리 var1.b.clear() 해주고 대입해야할까요?
아시는 분 답변 부탁드립니다 ㅠ


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/10/08 18:53
수정 아이콘
STL을 안쓴지가 거이 10년은 된것 같아 기억은 가믈 가믈 하지만, 제 상식으로는 Clear를 해주어야 할듯 합니다.

그런데... var1 = var2 는 성립이 안 될것 같습니다. Deep Copy를 해줘야 할듯 합니다. 아니면 = 를 연산자 오버로딩하던가...
09/10/08 19:28
수정 아이콘
그대로 소스를 짜보고 말씀 드립니다(컴파일에 사용한 툴은 visual studio c++ 2008 expression입니다.)

우선 var2.b에 원소를 하나 넣고 var2에 var1을 대입하였는데 var1에 들어간 원소대로만 나온것을 보니 기존에 넣은 내용은 사라지는것 같습니다.

var1의 내용 자체를 그대로 대입시킨것같은데 만약 shallow copy 였다면 메모리 해제시 충돌이 발생하여 오류가 발생하겠지만

그런일은 발생하지 않은것으로 보아서 대입할 시에 데이터를 1:1로 카피하는 deep copy 형식을 취한것 같습니다.

소스입니다.

#include <iostream>
#include <vector>

struct A
int a; std::vector<int> b;
;

using namespace std;

int main()

struct A var1;

var1.b.push_back(1);
var1.b.push_back(2);
var1.b.push_back(3);

struct A var2;

var2.b.push_back(1);

var2 = var1;

for(int i = 0; i < var2.b.size(); i++) {
cout << var2.b[i] << endl;


return 0;
}
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
65388 시디드라이브가 사라졌어요~ 지니-_-V1521 09/10/08 1521
65387 요새 싸이월드로 이런 쪽지 받아보신 분 있나요? [10] 로랑보두앵2556 09/10/08 2556
65386 무선공유기사용질문이요 [3] 열혈강사1247 09/10/08 1247
65385 왕십리에 대해서 질문드립니다. [5] 오월1815 09/10/08 1815
65384 컴퓨터를 좀 바꿔보려 합니다. 질문 좀 드릴께요!! [9] hyun52801605 09/10/08 1605
65383 MSL경기나 서바이버리그 공짜로 보는 사이트 없나요? [3] 토레스1975 09/10/08 1975
65382 제노텍틱스 1 공략 부탁드립니다. [2] 아즈라엘~1785 09/10/08 1785
65381 KT 쿡 TV 쓰시는분들 궁금한게 있어요 ^^ [1] EsPoRTSZZang2105 09/10/08 2105
65380 초콜릿폰 광고에서 태연씨의 대사...? MC ONX2122 09/10/08 2122
65379 뮤직비디오 질문드려요!! 진실된 소리1684 09/10/08 1684
65378 wow 북미에서 한국서버 접속여부 [4] 씨즈2784 09/10/08 2784
65377 삼성 역사상 최고의 리드오프는 누구일까요..? [4] 라이시륜2095 09/10/08 2095
65376 노트북 램 업글 질문드립니다. [6] 보영1532 09/10/08 1532
65375 카오스 이제 막 시작했는데 너무 어렵습니다.. [9] waterword2282 09/10/08 2282
65374 C++ vector 메모리 질문드립니다. [2] 고지를향하여2438 09/10/08 2438
65372 과학관련 도서 추천 좀 해주세요. [5] kaka1961 09/10/08 1961
65371 사람은 어디까지 이기적이어도 되는가? [14] 삭제됨1849 09/10/08 1849
65370 스타2 타워디펜스 Hard 질문입니다. [5] 보컬2571 09/10/08 2571
65369 PC용 VGA 카드 추천 부탁드립니다. [11] 삽어1575 09/10/08 1575
65368 허벅지 & 엉덩이 살 빼기 [7] 엠피삼2390 09/10/08 2390
65367 계절독감 예방접종이 중요하나요? [1] 노때껌1599 09/10/08 1599
65366 혹시 GTA:San Andreas하시는 분 계신가요? [3] 닥터페퍼2128 09/10/08 2128
65365 자동차 관련 사이트 추천 부탁드립니다. 언제나남규리1674 09/10/08 1674
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로