알고리즘/정리 및 오류 해결 방법
-
Cannot initialize a variable of type 'int' with an rvalue of type 'void *' 에러 해결법알고리즘/정리 및 오류 해결 방법 2018. 12. 9. 16:58
변수 선언 오류Cannot initialize a variable of type 'int' with an rvalue of type 'void *' 와 같은 에러는 흔히malloc() 과 같은 함수를 통해 변수를 선언할때 자주 발생한다.ex)> int temp = malloc(sizeof(int));> Cannot initialize a variable of type 'int' with an rvalue of type 'void *' 이러한 경우의 이유는 malloc() 함수로 선언되는 경우에는 void* 형식으로 선언이 되어 int 변수에 할당할 수가 없기 떄문에 발생한다. 따라서 (int*) 와 같은 식으로 변환을 시킨 뒤 선언해 주면 할당된다.> int* temp = (int*)malloc(size..
-
댕글링 포인터 문제: free 함수를 이용해도 계속 호출 되는 문제알고리즘/정리 및 오류 해결 방법 2018. 12. 9. 16:47
아래와 같이 변수를 malloc() 함수를 이용해 호출해 준뒤 메모리 누수를 없애기 위해 free() 함수로 해제를 하여도 계속 호출되는 문제가 발생할 때가 있다.> int* arr = (int*)malloc(sizeof(int)); > arr[1] = 1;> free(arr);> std::cout int* arr = (int*)malloc(sizeof(int));> arr[1] = 1;> free(arr);> arr =NULL;
-
c++ malloc() 함수 설명알고리즘/정리 및 오류 해결 방법 2018. 12. 9. 16:38
malloc 은 memory allocation 의 약자로 메모리를 사용하기위해 바이트 단위로 메모리 공간을 확보하고 예약된 공간에 대한 포인터를 리턴한다.보통 sizeof 연산자를 사용하며 아래와 같이 int(4바이트) 크기만큼 메모리를 할당하는 등개발자가 원할 떄 원하는만큼 동적으로 메모리를 할당 할 수 있다.> malloc(sizeof(int));이 때 size가 0으로 지정되거나 메모리 할당에 실패하면 리턴 값은 NULL 이다.정상적으로는 메모리의 주소 즉, 첫번째 바이트의 주소를 리턴한다.ex)> std::cout 0x1004563f0 근데 malloc 을 할당할 때 어떠한 데이터 형을 저장하는지를 컴퓨터는 모르기 때문에 앞쪽에(int*) 와 같은 걸 추가해 변환해야한다.> int* arr = ..
-
c++ 에서 using namespace 를 장려하지 않는 이유알고리즘/정리 및 오류 해결 방법 2018. 11. 25. 13:00
string 이나 cout 등을 쓸때 앞에std:: 를 번거롭게 쓰지않는 방법으로 상단에using namespace std 를 쓰는것이 있다.예를 들면temp1 라이브러리에 fun1()temp2 라이브러리에 fun2()가 각각 있는경우temp1:fun1();temp2:fun2();와 같은 식으로 쓰지않기위해using namespace로 아래와 같이 선언 한뒤 바로 아래와 같이 바로 사용한다.using namespace temp1;using namespace temp2; fun1();fun2();하지만 이를 권장 안한다는 말이 많은데 그이유는라이브러리 2개를 호출할 때 같은 메소드가 있는 경우temp1 라이브러리와 temp2 라이브러리 모두 fun2() 라는 함수가 생겨버리면 fun2() 는 충돌이 나기때..