지역변수로 선언한 문자열이 항상 동일한 주소를 가지네요?
아란
void func() {
int arg[10];
printf(%p, arg);
}계속 같은 값을 출력하는데지역변수로 선언한 건 사라져야 하지 않나요?만약 이게 어떤 원리에 의해 그런 거라면어떠한 시스템에서도 똑같이 동작하는 건가요?함수 안에서 인자로 받은 원본 문자열에 대해 strtok을 쓰는데원본이 변형되지 않게 하려고 저렇게 복사본을 만들어서tokenize 한 거거든요.첨엔 안 될 거 같았는데 해보니까 돼서 궁금해졌습니다.답변 부탁드릴게요 ㅎ
-
초코홀릭
아 그렇군요 ㅎ 잘 배웠습니다 ^_^
-
보라나
네 생각 하신 대로 입니다. 다만 빈 공간이고 누구든지 접근이 가능한 영역이므로 그 영역을 어떤 다른 곳에서 메모리가 할당 된 상태에서 그 메모리를 바꾸려고 하면 잘못된 접근으로 오류가 나죠. 아직 그 공간을 어떤 변수가 사용하지 않기 때문에 맘대로 접근해도 가만 두는 거구요. 그래서 메모리 포인터 같은 경우 주소를 그대로 두시 않고 할당 해체후에 그 포인터 변수에 0이나 nullptr 을 을 넣어서 아에 이런 오류 가능성을 차단하기도 합니다.
-
FaintTears
그럼 지웠다고 표시만 할 뿐이고 접근은 가능하게 둔 건가요? 함수 끝나고 나서 그 주소로 출력해보면 잘 나오거든요 ㅋ
-
우솔
OS 가 무턱대고 메모리를 막주는게 아니라 프로그램당 그러니까 프로세스당 메모리를 가상으로 기본 크기 만큼 만들어서 주는걸로 압니다. 거기에서 요청이 더 있으면 늘려가는 거구요. 그러므로 가상의 영역 만큼 주는 거고 거기에서 순서대로 채워 나가니 동적인 할당이 아닌 이상 매번 똑같은 값을 가르키겠죠. 게다가 데이터는 지우지 않고 지웠다고 표시(오버라이트 가능 하다고 표시)만 할 뿐이지 실제로 지우진 않아요. 그래서 파일 복구 같은 프로그램들이 동작 가능
-
귀1여운렩
제가 질문을 좀 애매하게 올린 거 같은데 프로그램 실행이 아니고 함수 호출입니다. 그러니까 저 코드가 while문 안에 있다고 생각하시면 될 거에요. 물론 프로그램을 다시 시작하면 달라집니다.
-
심플이
질문자 시스템에서 위 배열이 차지하던 메모리를 다른 프로그램이 계속 사용하지 않다면, 동일한 메모리를
할당 받을수도 있지요...
저런건 오로지 os 의 관리하에 있는 것이므로, 같게 나오던 다르게 나오던 신경 쓸 필요가 없지요...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2698829 | 학점계산기 (7) | MyWay | 2025-06-20 |
2698782 | 기초적인 함수 질문이요ㅠㅠㅠㅠ | 내담 | 2025-06-20 |
2698749 | 프로그램 짜던 도중 패닉입니다...ㅜ | 파랑 | 2025-06-19 |
2698719 | 조건부컴파일 질문입니다.~ (2) | 큐트 | 2025-06-19 |
2698693 | 재귀 함수 에러 | 바닐라 | 2025-06-19 |
2698673 | 고민이있는데 들어좀주세요!! (1) | 초코맛캔디 | 2025-06-19 |
2698644 | 1부터 n까지의 합을 구하는데 엄청긴숫자의 합을 구할때는 어떻게 해야하나요? (4) | 슬우 | 2025-06-18 |
2698616 | 다른 함수로 안넘어갑니다..;;; | 도1도캣 | 2025-06-18 |
2698587 | 배열하다 막혀서... (3) | WhiteCat | 2025-06-18 |
2698559 | 문자열을 비우는방법 (2) | 하늘 | 2025-06-18 |
2698528 | 착하고 친절한 선생씌구해염~ㅋㅋ (4) | 옆집언니야 | 2025-06-17 |
2698502 | 자료구조 큐 | 캔서 | 2025-06-17 |
2698477 | 실행화면 배경문의요 | 선아 | 2025-06-17 |
2698430 | 변수의 값이 저장이 않되네요;; (4) | 피네 | 2025-06-16 |
2698404 | C#을 배울려고 하는데 C나 C++을 알아야 하나요 ?? (1) | 신당 | 2025-06-16 |
2698342 | 프로그램 질문점녀 (4) | 데빌의눈물 | 2025-06-16 |
2698318 | 파일 입출력 질문입니다~ (2) | 꽃 | 2025-06-15 |
2698291 | 문자 출력 함수 : putchar, fputc에 관하여. | 으뜸 | 2025-06-15 |
2698261 | 씨언어 (1) | 마리 | 2025-06-15 |
2698212 | 구조체, 포인터가 같이 들어간 프로그램 소스코드 있으신분? (4) | 그림자 | 2025-06-14 |