read only data 영역에 관하여
글쓴이: mr.lee / 작성시간: 월, 2007/02/12 - 4:55오후
예전에 다른분한테 물어봤을때 '바뀔수도 있다' 고 하시긴 하셨지만..다시 궁금해지네요.
const char* str = "GOOD"; 이라고 했을때.
이 GOOD 이라는 문자열은 프로그램의 read only data 영역에 만들어지고 이 포인터를 갖게 되는것일텐데요.
그렇다면 구조체안에서 이런식의 const 문자열을 갖고 있어야 하는것이 있다고 할때 굳이 char[] 로 하지 않아도 되지 않을까요.
typedef struct { int id; const char* name; } Type; Type* type = (Type*) malloc(sizeof(Type)); type->id = getUniqId(); type->name = "TestType";
뭐 이런식이 되겠죠. 메모리도 절약되고.. 이러한 방식이 문제가 되는 경우가 있을까요?
Forums:
type->name = "TestType";
type->name = "TestType"; 라는 코드는 "TestType" 가 들어있는 read only data영역의 포인터를
넣어주는 것이므로 문제는 없습니다.. 전혀 문법상에 문제가 있지도 않구요.
대신 저게 프로그램에서 논리적으로 어떻게 쓰이느냐에 따라서 버그는 발생할수 있겠지요 :)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기