#include <iostream>
#include <string>
using namespace std;
char *getname();
int main()
{
char *name;
name = getname(); //문자열의 주소를 대입
cout << (int *)name << " : " << name << "\n";
delete[] name; //메모리를 해제한다.
name = getname(); //해제한 메모리를 다시 사용한다.
cout << (int *)name << " : " << name << "\n";
delete[] name;
}
char *getname()
{
char temp[50]; //임시로 값을 받을 배열
cout << "값을 입력하시오 : ";
cin >> temp;
char *nTemp = new char[strlen(temp) + 1];
strcpy_s(nTemp, strlen(temp) + 1, temp);
return nTemp; //함수가 종료될 때 temp는 소멸한다.
}
입력
값을 입력하시오 : hihi
출력
0083D8D8 : hihi
입력
값을 입력하시오 : hello
출력
0083DA98 : hello
알 수 있는 결과
- name에 주소를 넣고 사용하고 해제함으로써 메모리의 소모를 줄인다.
- 메모리를 해제하고 사용하므로 주소가 달라진다.
*중요*
new 연산자로 자유공간에 변수를 생성한 것은 이를 해제 하지않으면 계속 메모리를 차지하고 있음. 함수내에서 생성을 해도 마찬가지.
'C++ > Basic' 카테고리의 다른 글
struct 포인터 (0) | 2021.03.12 |
---|---|
메모리 활용 예시 delete 2 (0) | 2021.03.11 |
구조체(struct) (0) | 2021.02.22 |
포인터 (0) | 2021.02.22 |
char, string (0) | 2021.02.22 |