포인터(5)
-
[디버깅] 메모리 디버깅(VS2015)
메모리 디버깅 과정은해당 자료의 포인터를 이용하여 해당 지점의 값이 변경되었는지를 확인하는 방법이다.변경 시점을 예상하기 어렵거나 알 수 없는 지점에서 변경되어 버그가 생길 때 사용할 수 있다.사실상 소규모 프로젝트에선 쓸 일이 거의 없겠지만규모가 큰 프로젝트에선 가끔씩 쓸 일이 생길 수 있다. 과정과정은 간단히 요약하면중단점 걸기 -> 관찰 하고자 하는 자료의 포인터 알아내기 -> 해당 포인터로 중단점 걸기 -> 적중 중단점 걸기그렇다. 중단점을 걸어야 데이터를 볼 수 있으니..예제는 testData 백터에 0번째 값을 변경한다. 중단점 지정조자식을 통해 testData의 0번째 데이터의 포인터를 얻을 수 있다.0x00$$$$$$ 형태로 된 포인터를 복사해두고(메모장이나 직접 입력) 새로 만들기 -> ..
2016.01.02 -
혼자 연구하는 C/C++ 3장 정리(변수)
1. 변수의 정의말뜻 그대로 풀어보면 변할 수 있는 수.보존과 관리를 위해 사용한다. 메모리 관리를 효율적으로 하기위해 사용한다.이름은 변수이지만 반드시 수만 들어가는 것이 아닌 문자열이나 포인터 같은 자료형도 저장.컴퓨터가 하는 주된 일은 메모리에 기록된 값을 처리해 입출력 하는 것.4GB의 메모리는 40억 개나 되는 이런 기억 소자들에 이름을 붙여줄 수 없음.연산 대상 메모리의 위치를 구분하기 위해 숫자로 된 번지(Address)를 사용.0x183c7eda에 값을 저장해라! 그런데 이걸 어떻게 외워?!이런 값이 10개만 있어도 사람 머리는 산산조각 남.그래서 변수를 사용하면 실제 번지 값을 읽거나 쓰는 코드를 대신 작성할 수 있다!int Num;이렇게 변수를 사용하면 실제 코드를 작성할때 Num = ..
2015.02.26 -
6일차 예비강의 메모
1. 포인터의 차원이란?참조할 수 있는 주소의 단계.0차원 - int a; 1차원 - int* a : 0차원 포인터의 주소를 가리킴.2차원 - int** a : 1차원 포인터의 주소를 가리킴. 2. 대입은 같은 차원에서만 가능하다.같은 차원만 가능함. & 연산을 통해 타입을 승격할 수 있음. 예제)int *a;int *b;int c = 10; a = c;b = &c; a = c는 1차원에 0차원을 대입하는 문장이 되므로 참조할 수 없다.b = &c는 &는 참조연산자를 이용해 int형 c를 int* 차원으로 승격하여 주소값을 대입해준다. 실제로 이런 문구의 워닝이 뜨며 a = c는 값을 제대로 참조할 수 없다.주소를 참조하든 안의 값을 참조하던 차원이 같아야 정상적인 연산이 되는 것이다. 아래 코드를 실행..
2015.02.23 -
포인터 넘길 때 주의사항(malloc 예제)
1. 예제 user_malloc 함수를 통해 num의 포인터를 넘겨함수에서 동적할당하여 메모리를 확보한다. 1234567891011121314151617181920#include #include void user_malloc(num); void main(){ int* num = 0; user_malloc(num); *num = 8; printf("%d\n", *num); printf("%#p\n", num); printf("%p\n", num);} void user_malloc(int* m_num){ m_num = malloc(sizeof(int*));}Colored by Color Scriptercs 하지만 이렇게 하면 오류가... 일단 함수 내부에선 m_num이 메모리 확보가 잘 된다.하지만 num이..
2015.02.17 -
5일차 예비수업 메모
고용센터 문제 해결로 부득이하게 결강을 하게되었다..슬프도다 교수님 수업 하나 하나가 주옥같은 말로 이뤄져있는데 못 듣다니!!!!그래서 동기 동생에게 필기를 빡세게 부탁했다. 1. printf, scanfprintf : print + formatprintf("문자열 or 문자열 상수", [가변인수(길이, 형태가 있지 않은)]); scanf : scan + formatscanf("서식만 들어갈 수 있음", 가변인수);% : format(서식)\n, \r, \b : 확장열(excape sequence)여기서의 escape는 탈출 X, 확장 O 2. 예제#include void main() { int a; int b; int c=0,d=0,e=0; a = scanf("%d%d%d",&c,&d,&e); // s..
2015.02.16