지역변수로 선언한 문자열이 항상 동일한 주소를 가지네요?
아란
void func() {
int arg[10];
printf(%p, arg);
}계속 같은 값을 출력하는데지역변수로 선언한 건 사라져야 하지 않나요?만약 이게 어떤 원리에 의해 그런 거라면어떠한 시스템에서도 똑같이 동작하는 건가요?함수 안에서 인자로 받은 원본 문자열에 대해 strtok을 쓰는데원본이 변형되지 않게 하려고 저렇게 복사본을 만들어서tokenize 한 거거든요.첨엔 안 될 거 같았는데 해보니까 돼서 궁금해졌습니다.답변 부탁드릴게요 ㅎ
-
초코홀릭
아 그렇군요 ㅎ 잘 배웠습니다 ^_^
-
보라나
네 생각 하신 대로 입니다. 다만 빈 공간이고 누구든지 접근이 가능한 영역이므로 그 영역을 어떤 다른 곳에서 메모리가 할당 된 상태에서 그 메모리를 바꾸려고 하면 잘못된 접근으로 오류가 나죠. 아직 그 공간을 어떤 변수가 사용하지 않기 때문에 맘대로 접근해도 가만 두는 거구요. 그래서 메모리 포인터 같은 경우 주소를 그대로 두시 않고 할당 해체후에 그 포인터 변수에 0이나 nullptr 을 을 넣어서 아에 이런 오류 가능성을 차단하기도 합니다.
-
FaintTears
그럼 지웠다고 표시만 할 뿐이고 접근은 가능하게 둔 건가요? 함수 끝나고 나서 그 주소로 출력해보면 잘 나오거든요 ㅋ
-
우솔
OS 가 무턱대고 메모리를 막주는게 아니라 프로그램당 그러니까 프로세스당 메모리를 가상으로 기본 크기 만큼 만들어서 주는걸로 압니다. 거기에서 요청이 더 있으면 늘려가는 거구요. 그러므로 가상의 영역 만큼 주는 거고 거기에서 순서대로 채워 나가니 동적인 할당이 아닌 이상 매번 똑같은 값을 가르키겠죠. 게다가 데이터는 지우지 않고 지웠다고 표시(오버라이트 가능 하다고 표시)만 할 뿐이지 실제로 지우진 않아요. 그래서 파일 복구 같은 프로그램들이 동작 가능
-
귀1여운렩
제가 질문을 좀 애매하게 올린 거 같은데 프로그램 실행이 아니고 함수 호출입니다. 그러니까 저 코드가 while문 안에 있다고 생각하시면 될 거에요. 물론 프로그램을 다시 시작하면 달라집니다.
-
심플이
질문자 시스템에서 위 배열이 차지하던 메모리를 다른 프로그램이 계속 사용하지 않다면, 동일한 메모리를
할당 받을수도 있지요...
저런건 오로지 os 의 관리하에 있는 것이므로, 같게 나오던 다르게 나오던 신경 쓸 필요가 없지요...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |