목록Programing/C, C++ (34)
공부중
회사에서 어쩌다보니 array delete 관련 이야기가 나와서 한번 해보려고 한다. 테스트 하고자 하는것은 아래와 같다. 동적할당으로 배열을 만들었는데 이것을 delete 할때 delete[] 가 아닌 일반 delete를 했을 경우 어떻게 처리가 되는가 실험 코드는 아래와 같다. #include int main( ) { int* arr = new int[10]; arr[0] = 0; arr[1] = 10; arr[2] = 20; arr[3] = 30; arr[4] = 40; arr[5] = 50; arr[6] = 60; arr[7] = 70; arr[8] = 80; arr[9] = 90; int* temp = (arr)+1; std::cout
이번에도 많이 햇깔릴수 있을것이라 생각한다.. 아래의 코드를 보자 do { std::cout
역시 이번에도 기초적인 내용이었다. #include class A { public: A() { std::cout
어디 모 회사의 테스트를 봤는데 매우매우 아리까리할수 있는문제들이 많이 나와서 좀 몇개 정리해보려고 한다. 문제는 다음과 같다. #include void foo(int a) { std::cout
std::shared_ptr은 레퍼런스 카운팅 방식의 스마트 포인터로. 특정 주소를 가리키는 포인터변수가 얼마나 있느냐에 따라서 자동으로 삭제할지 결정해서 자동으로 메모리 해제하는 방식이다.(count가 0일때 메모리 할당 해제) 이 레퍼런스 카운팅 방식의 스마트 포인터 방식은 특정 조건(?)에 따라서 메모리 누수(memory leak)이 발생 할 수가 있는데. 그것에 관련된 글을 써보려고 한다 일단 테스트 하는 코드는 아래와 같다. #include #include struct MyStruct { std::shared_ptr foo; }; int main() { //_CrtSetBreakAlloc(153); auto obj1 = std::make_shared(); auto obj2 = std::make_..
코드는 아래와 같다. #include #include //shared_ptr , make_shared class MyClass { public: MyClass(int val_int = 0, double val_double = 0.0) : value_int(val_int), value_double(val_double) {}; ~MyClass() {}; private: int value_int; double value_double; }; int main() { /* 가능하다면 메모리 리소스를 처음으로 만들 때 make_shared 함수를 사용하여 shared_ptr을 만들것. make_shared는 예외 안전하고 동일한 호출을 사용하여 제어 블록 및 리소스에대한 메모리를 할당하고 생성 오버헤드가 줄어듭니다...
코드는 아래와 같다. #include #include //unique_ptr int main() { int foo = 100; //unique_ptr std::unique_ptr unique_ptr_value1{ new int }; //std::unique_ptr unique_ptr_value2{ &foo };//Runtime Error // 동적으로 할당하지 않은 주소를 넣으면 해제시 문제 발생 *unique_ptr_value1 = 1000; std::cout