본문 바로가기

코오딩/_배운거.

동적 메모리 할당_현재까지 내가 이해한 내용

반응형

 

int *ptr = NULL; //포인터는 항상 선언해줄때 비워주자.

ptr = (int*)malloc(sizeof(int));//int = 4

ptr에 인트 사이즈 만큼 비워달라고 한다.

ptr = (int)malloc(sizeof(int));

아무변수 = (자료형)malloc(sizeof(자료형));

*ptr=4;  //ptr이 가르키는곳에 4 들어감.

free(ptr);//메모리 공간을 비워줘야한다.

//////////////////////////////////////////

int *dangling = NULL; dangling 이라는 포인터를 null로 선언해주고

dangling = ptr; //dangling 에 ptr 값을 저장했는데

free(ptr); //ptr만 풀어주면 dangling 값은 가르키는게 아무것도 없게됨. 접근할 수 없는 상태이기에

*dangling = ? //overflow //문제가 발생합니다.

/////////////////////////////////////////

이래서 배열도 선언할수 있다.

ptr[i] //이런 식으로 배열 선언해주고

*(ptr+3)//ptr[3] //아니면 ptr+3 해줘도 된다.

///////////////////////////////////////////////////

int * arr = (int*)malloc(sizeof(int)*n);
0x00

case 
arr+1 // ox04  // n칸으로 넘어감 arr + n

모든 배열은 포인터다. 아래 문장은 서로 같은거임.
&arr[0] == &(*(arr+0)) 

//모든 포인터는 4byte

 

 

*참고

https://dojang.io/mod/page/view.php?id=319

반응형

'코오딩 > _배운거.' 카테고리의 다른 글

C# TryParse문. 트라이파스문  (0) 2021.02.24
컴파일러 에러_꾸준히 업데이트중  (0) 2020.03.09
fgets() 함수  (0) 2020.03.06
이중포인터 개념정리. 미완.  (0) 2020.03.02
문자열 정렬하기(버블소트)  (0) 2020.02.29