함수에서 변수를 선언 할 때 메모리를 사용하고 있습니다. 기능이 끝나면 메모리가 해제됩니까?함수 변수는 어디에 있습니까?
답변
모든 자동 스토리지 변수가 범위 밖으로 갈 때 해제, 당신은 동적으로 할당 된 것들에 대해 명시해야됩니다
void foo()
{
int x;
int* y = new int;
//You get a memory leak with each call to foo without the following line
delete y;
} //x is freed here
동적 변수와 같은 것은 없습니다. 동적 * 객체 만 있습니다. 모든 변수의 범위가 지정됩니다. 그들의 이름과 같은 범위를가집니다. (그렇기 때문에 'y'는 범위를 벗어나고 모든 것이 잘됩니다.) –
@KerrekSB이게 장난인가요? –
@ScepticalJule : 아니요. 잘못된 대답을 고치려고합니다. –
아마도 가장 중요한 당신은 스택과 힙의 개념을 이해하다 그리고 주제에 아주 좋은 설명이 게시물 : 옆
What and where are the stack and heap?
영리함을 (auto_ptrs 등), 그것의 요점은 스택에 할당하는 경우 그 때 때 레아 해제된다는 것입니다 범위를 지정하십시오. 그렇지 않으면 직접 해방해야합니다. 위의 내용을 이해하면 찾는 대상을 더 잘 이해할 수 있습니다.
"스택 및 힙"을 오해하여 자동 및 동적 저장 기간에 대해 읽어야합니다. –
궤도의 @ Lightness Races - 내가 IMO를 쌓아 놓고 힙을 잘못 이해하지는 않았지만, C++ 용어로 그 용어로 설명 했어야한다는 것이 맞습니다. 결국 변수는 스택 또는 힙에만있을 수 있으며 스택이 풀리거나 할당 해제 함수를 호출 할 때 변수를 해제 할 수 있습니다. 나는 당신의 요점을 잡아! – RMo
"개체"는 "변수"가 아니라 스택 또는 힙이 아닌 다른 개체에있을 수 있습니다. _That_ 포인트! :) –
- 1. 전역 변수는 어디에 있습니까?
- 2. 숨겨진 매개 변수는 어디에 있습니까?
- 3. 파이썬의 변수는 어디에 저장되어 있습니까?
- 4. 이 함수의 매개 변수는 어디에 있습니까?
- 5. 메모리에서 C++에 저장된 변수는 어디에 있습니까?
- 6. Javascript 모듈 패턴, 개인 변수는 어디에 있습니까?
- 7. 민감한 변수는 어디에 저장해야합니까?
- 8. jqgrid 문제 : "필터"매개 변수는 어디에 있습니까?
- 9. Object에 내 인스턴스 변수는 어디에 있습니까?
- 10. DLL의 전역 변수는 메모리에 어디에 저장되어 있습니까?
- 11. 메서드 - 로컬 변수는 어디에 저장되어 있습니까?
- 12. 범용 변수는 어항에 어디에 저장되어 있습니까?
- 13. Vista32에서 환경 변수는 어디에 설정되어 있습니까? 따라
- 14. Ccnet에서 $ LastIntegrationCommit 변수는 어디에 저장되어 있습니까?
- 15. 내 URL 매개 변수는 어디에 있습니까?
- 16. Node.js module.exports에서 내보내는 함수와 변수는 어디에 있습니까?
- 17. 함수 glCreateShaderObjectARB()는 어디에 있습니까?
- 18. 함수 Empty() {}는 어디에 있습니까?
- 19. Django 뷰 호출 사이에 사용할 변수는 어디에 저장할 수 있습니까?
- 20. 변수는 메소드 내에서 어디에 정의되어야합니까?
- 21. 전역 매개 변수는 어디에 보관해야합니까?
- 22. 메모리 정적 변수는 어디에 저장됩니까?
- 23. 페이지 보호 변수는 어디에 저장됩니까?
- 24. 프로젝트의 매개 변수는 어디에 저장해야합니까?
- 25. 실제 매개 변수는 어디에 전달됩니까?
- 26. PHP 함수 변수는
- 27. 호출 변수는 다른 함수
- 28. 변수는 변수는 my_sound는 먼저 외부 함수 선언
- 29. 글로벌 변수는 익명 함수
- 30. '|' on 함수 매개 변수는?
"스택"에 대해 들어 본 적이 있습니까? - 당신은 기본 유형에 대해 이야기하고 있다고 생각합니다. 그렇지 않으면 힙을 사용할 수도 있습니다. 그리고 클래스가 올바른 소멸자를 제공하면 var가 범위를 벗어나면 메모리가 해제됩니다. 물론 새로 만든 인스턴스를 만들었습니다.이 경우 귀하의 의무입니다) – ShinTakezou
그냥 가설을 세우지 마십시오. –