3525
2012-03-28 19:13:52
2
str1은 데이터영역(비힙영역이라 수정불가능한 영역, 또는 상수영역)에 있는 "abcdef"라는 자료를 가리키는 포인터가 되고
str2는 char형 배열을 만든뒤, 거기에 데이터영역의 "ABCDEF" 라는 자료를 복사해 넣는 형식으로 됩니다.
따라서 컴파일은 문제없이 되고 런타임시에도 값을 보는것 자체는 둘다 문제없이되나 값을 수정하려고 하면 str1은 수정불가능한 영역에 접근하려 하기에 메모리 접근에러가 나게되고, str2는 배열의 값만 바뀌므로 문제가 없습니당
이건 단순히 포인터뿐만 아니라 메모리구조와 instruction과 static data, heap이 각각 어떻게 관리되는가에 대해 알아야 제대로된 답을 낼 수 있는 부분인것 같네요
문법만 겨우 떼고 온 사람들 걸러내기엔 좋은듯ㅋㅋㅋ