본문 바로가기
반응형

SWE/C++ OOP43

C++ new 와 malloc의 차이점 | new 연산자 재정의 | exception throw malloc과 new 개념 동적으로 메모리를 할당하기 위해서 사용하는 것이 두 가지가 있다. malloc, new malloc은 C에서부터 사용되어온 것이고 new는 C++에서 새로 추가된 것이다. malloc은 함수의 일종이고 new는 연산자이다. 코드는 아래와 같이 사용한다. interger형 10개를 동적으로 할당하는 코드이다. // malloc int *array1 = (int*)malloc(sizeof(int)*10); // new int *array2 = new int[10]; 둘의 차이를 보면 malloc은 형 변환(캐스팅)이 필요하고, new는 형 변환이 필요 없다. C++에서 new 가 추가된 이유 C++에서는 단순한 자료형 외에도 '객체'라는 것이 추가되었다. 그런데 여기서 malloc.. 2022. 2. 4.
Modern C++ 소개 | 기존 C/C++와 차이점 Modern C++ 소개 Modern C++은 기존 C와 호환이 가능함과 동시에 더 간단하고 안정적이고 빠르고 더 아름다운 코드를 제공한다. C++11부터의 큰 특징들을 아래에 설명하겠다. 참고로, C++은 C스타일의 프로그래밍은 지양한다.(raw pointer의 사용, 배열, null로 종료되는 string 등) > 자원과 스마트 포인터 C 스타일 프로그래밍의 가장 큰 문제점은 메모리 누수(memory leak)이다. memory leak은 new로 할당된 메모리를 해제(delete)하지 않았을 때 발생한다. 모던 C++은 Resource Acquisition Is Initialization (RAII) 원칙을 강조한다. RAII 원칙은 간단하다. 모든 자원들은 object에 의해 소유되어야 한다. 즉.. 2022. 1. 11.
C++ template | type_traits | modern C++ 모르겠음 ㅠㅠ 템플릿 클래스 정의 template class A { public: vector vec; }; 템플릿 클래스 사용 A a; 템플릿 파라미터가 템플릿인지 확인하는 방법 #include template class A { public: vector vec; }; template struct is_instance : public std::false_type {}; template struct is_instance : public std::true_type {}; int mian() { A a; std::cout 2022. 1. 11.
Vector C Array | 메모리 복사 | 메모리 계산 | Address 연산 Q. vector의 Raw 데이터 메모리 주소 접근 방법 std::vector vec; 방법1) vec이 empty가 아닐 때만 가능. 비어있을 경우, vec[0]이 없는데 접근하기 때문에 에러난다. &vec[0] 방법2) 추천방법 vec.data() Q. vector의 Raw 데이터 메모리 연산 방법 *유의 std::vector vec = {1,2,3,4,5} vec.data() : 0x0AE21230 {1} // address vec.data() + 4 : 0x0AE21240 {5} // 0x0AE21230 + 4*sizeof(int) = 0x0AE21230 + 16 ((unsigned char*)vec.data()) + 4 : 0x0AE21234 {2} // 0x0AE21230 + 4 vec.dat.. 2022. 1. 11.
반응형