소개
게시글
질문&답변
소멸자에서 Exception Error가 발생하는데 원인을 잘 모르겠습니다.
정확하게는 사진에서 잘린 main문을 확인해봐야 할 것 같습니다만...의심되는 부분은 operator 두번째 매개변수 타입으로 IntArray&가 아닌 IntArray로 타입을 지정하시면서 문제가 발생한 것 같습니다.IntArray&가 아닌 IntArray로 매개변수 타입을 설정하시게 되면인자 전달 과정에서 생성자가 호출되어 얕은 복사가 발생하고operator
- 1
- 2
- 306
질문&답변
이중 포인터에 저장되는 것에 대해 궁금한 점이 있습니다.
설명을 위해서 int** matrix = new int*[row]; 라는 구문을 아래와 같이 선언문과 메모리 할당문으로 분리하겠습니다.int** matrix = nullptr; // (1)matrix = new int*[row]; // (2)(1)번 코드는 int** matrix라는 선언문으로, matrix는 int* 타입 정보를 가리킬(저장할) 수 있는 포인터 변수라는 의미입니다.(2)번 코드는 int* 타입(크기) 데이터를 row개 담을 수 있는 메모리를 동적으로 생성하고 이 메모리의 시작 주소를 matrix에 저장한다는 의미입니다.matirx[r] = new int[col] 코드를 위와 같이 풀이하면.int 타입 데이터를 col개 담을 수 있는 메모리를 동적으로 생성하고 이 메모리의 시작 주소를 matrix[r]에 저장한다는 의미입니다.(정리)1. matrix에 저장되는 것은 new int*[row]로 생성된 메모리의 시작 주소입니다.2. matrix[r]에 저장되는 것은 new int[col]로 생성된 메모리의 시작 주소입니다.
- 1
- 2
- 350
질문&답변
대입 연산자 오버로딩 연습문제 질문
Double Free 에러가 발생하는 이유는 operator = (const std::initializer_list& list) 연산자로 처리되는 것이 아닌 얕은 복사로 처리되었기 때문에 Double Free 에러가 발생하는 것 같습니다.(operator= 연산자 재정의 본문에 std::cout 호출되지 않음을 직접 확인해보실 수 있을 것 같습니다.)operator = (const IntArray& source) 재정의만 했음에도,array3 = {4, 5, 7} 구문이 실행되는 이유는 암시적으로 생성자가 호출되었기 때문인 것 같습니다.(생성자 본문에 std::cout 직접 확인이 가능하실 것 같습니다.)
- 2
- 2
- 317
질문&답변
start문에 디버깅을찍어도 안들어갑니다.
함수의 이름이 이상한 거 같습니다. (Strat -> Start)
- 0
- 1
- 280