C++에서 질문인데요 포인터에 관해서는 대충 이해를 했거든요...그런데 문제는 포인터 주소 연산에서요.. 그 3차원 배열에 접근을 위한 포인터 부분이 ㅡㅡ; 거기다 생성자와 소멸자에 대한 메모리 로드맵도 설명을 보기는 하는데 알아야 할 필요가 있는지 ㅡㅡ;; 그리고 버거마스터에 관한 설명도 좀해주세요 포인터를 유지하는 메모리 관리자를 만들고 메모리 할당 함수의 결과로 포인터를 리턴하는것이 아니고 메모리 관리자에서 유지하는 메모리 제어 블락의 번호를 리턴하자는 결론 이라는데.. 이것도 알필요가 있나요 ??
C++에서 질문인데요 포인터에 관해서는 대충 이해를 했거든요...그런데 문제는 포인터 주소 연산에서요.. 그 3차원 배열에 접근을 위한 포인터 부분이 ㅡㅡ; 거기다 생성자와 소멸자에 대한 메모리 로드맵도 설명을 보기는 하는데 알아야 할 필요가 있는지 ㅡㅡ;; 그리고 버거마스터에 관한 설명도 좀해주세요 포인터를 유지하는 메모리 관리자를 만들고 메모리 할당 함수의 결과로 포인터를 리턴하는것이 아니고 메모리 관리자에서 유지하는 메모리 제어 블락의 번호를 리턴하자는 결론 이라는데.. 이것도 알필요가 있나요 ??
배열은 몇차원이든 그냥 포인터랑 같습니다. 배열이 내부적으로 포인터로 처리되기 때문이지요. 2차원 배열 a[2][3] 이라면 1차원 배열 a[6]이랑 같은겁니다. 3차원도 마찬가지구요. 생성자나 소멸자가 메모리의 어디에 로드되는지 그런거까진 알고있어야 할 필요는 없을것같네요. 그런건 필요할때 찾아보면됨.
포인터 주소연산에 조금 덧붙이면.. a[6]라는 배열이 있으면 포인터로 *(a+6)이랑 같습니다. 포인터 연산이 이렇게 되는 이유는 포인터 값 자체가 현재 시스템의 bit수에 관련되 있기 때문입니다. 32bit가 요새 쓰는 것이니.. 4byte시스템이죠. 즉 정수형 int포인터는 4바이트 마다 건너뛰어 가리키게끔 되어있습니다. 아까처럼 a[6]의 배열이면 첫번째 배열요소의 번지가 1000 번일때 다음 배열요소는 메모리의 1004 번지겠죠. 그런데 포인터 연산에선 1을 더해주면됩니다. 이는 메모리 주소에서 1을 더하는게 아니라 포인터 카운트상에서 1 증가입니다. 이해하셨을듯;
소멸자 말하는거보니 C++ 클래스 위주로 공부하는 거 같은데 클래스 위주로 공부해서 어느세월에 포인터 깨우칠꺼나.. c제대로 하고싶으면 클래스는 나중에 공부하는게 좋다.
3차원 배열의 시작 포인터에 대해 물어 보는걸 보니, 샤 보다는 이 글쓴 사람이 포인터에 대한 개념이 더 깊은것 같다. 1차월 배열의 시작 포일터와 2차원,3차원은 포인터 자료형이 다 다르다. 자세한 설명은 생략한다
1
2
3
4
5
6
7
8