알고리즘 풀다가
char* char[] 을 검색해봤당
https://kldp.org/node/114515
const char* str1 = "abc";
const char str2[] = "def;
"abc"가 const 영역에 잡힌다.
str1 은 "abc" 위치를 가리키는 포인터를 갖게된다.
함수에서 return 할 경우 제대로 "abc" 가 제대로 return 된다.
str1[0]으로 접근하면 memory read 가 2번 발생한다.
str1이 가진 포인터를 읽고, 그 포인터가 가리키는 data를 읽는다.
str2는 4byte의 스택에 할당해서 할당한 스택의 주소를 b가 갖는다.
스택에 있는 str2에 const에 있는 "def"를 복사해넣는다.
str2를 갖고있는 "def" 는 스택영역에 있기때문에 함수에서 return을 하여 참조하려 하면 이상한 값이 나온다.
str2[0]으로 접근하면 memory read가 1번 발생한다.
str2는 스택의 주소이므로 스택 포인터로 offset을 구할 수 있고 이것이 가리키고 있는 곳의 data를 한번 읽는다. (!?)
용도에 따라 다르게 선택
'예전 > C, C++' 카테고리의 다른 글
call by ~ (0) | 2014.12.10 |
---|---|
visual studio warning 무시 하는 방법 (0) | 2014.05.20 |
[C++] binding (0) | 2014.01.28 |
[C++] upcasting (0) | 2014.01.28 |
[C++] 일반 함수 포인터, 멤버 함수 포인터 (0) | 2014.01.28 |