Mac OS에서 간단한 C++ 프로그램을 작성하고 있습니다. 난 그냥top에서 메모리 사용량이 잘못 표시 될 수 있습니다.
int main()
{
int *n = new int[50000000];
}
내가 lldb에서이 프로그램을 실행하고, n
가 할당 된 줄에서 중단 점을 넣어 있습니다. 그런 다음 다른 탭에서 top
을 실행하면 메모리 사용량이 336K 사전 할당임을 알 수 있습니다. 내가을 lldb 안에 넣었을 때, n에 대한 할당이 일어나기 때문에, 나는 나의 메모리 사용량이 올라갈 것으로 예상한다. 그러나 위로는 내 프로그램에서 사용한 것과 같은 양의 메모리를 보여줍니다. 이것에 대한 이유는 무엇일까요? C++에서 메모리 할당이 어떻게 일어나는지 이해하려고 노력하고 있는데, 이것이 내가 이것을하고있는 이유입니다.
나는 main의 범위를 종료하지 않았습니다. 내가 다시 정상을 확인할 때, 나는 중괄호를 닫을 때 앉아있다.
할당은 아마 단지 가상 주소 공간을 예약한다를 들어, 일부 프로파일 링 도구가 필요합니다. 실제 메모리는 각 페이지를 누를 때까지 OS에 의해 할당되지 않습니다. 4K마다 단일 바이트를 쓰는 for 루프를 추가하십시오. –