재미있는 작은 프로그램을 실행 중이었고 당혹 스러웠던 문제가 발생했습니다.C++ new 연산자가 새 메모리를 할당합니다.
#include <iostream>
#include <string>
using namespace std;
struct T
{
int val;
};
int main()
{
for(int i = 0; i < 2; ++i)
{
T *p = new T;
cout << p << endl;
delete p;
}
T *q = new T;
cout << q << endl;
delete q;
return 0;
}
출력 :
0x16b76d0
0x16b76d0
0x16b76d0
그들은 동일한 메모리 위치에 모든입니까?
네, 모두 같은 위치입니다 *. 모든 프로그램이 수행하는 모든 작업은 동일한 객체에 대해 동일한 메모리를 재사용하는 것입니다 (왜 각 delete 후에는 더 이상 사용되지 않고 메모리 관리자가 적절하다고 간주하는 경우 다른 할당에 사용할 수 있으며이 경우에는 그렇지 않습니다) . – WhozCraig