반응형

new와 delete 함수는 molloc 함수처럼 동적할당에 쓰이지만, 훨씬 편하니.... 일단 쓴다 -_ -


/* new는 컴파일이 아닌 실행중에 공간을 할당하니 좋다 delete는 어디에서든지 또한 가능*/

#include <iostream>
#include <cstring> // 또는 cstring.h

using namespace std;
char * getname(void); // 함수원형 char형 포인트변수 리턴

int main()
{
 char *name;
 name = getname(); //문자열을 입력받아 그 주소를 name에 대입
 cout << (int*)name << ": " << name << "\n";
 delete[] name; // new로 할당했으므로 delete로 해제해야됨.

 name = getname(); //해제한 메모리를 다시 사용, 같은 메모리공간으로 될지 안될지는 모른다.
 cout << (int*)name << ": " << name << "\n";
 delete[] name; // 다시 해제

 return 0;
}

char * getname()
{
 char temp[80]; // 함수종료시 자동소멸 메모리
 cout << "what's your name? : ";
 //cin >> temp; // 공백허용 못함 (스택에 공백만큼 널문자가 쌓여있음)
 cin.getline(temp, sizeof temp); // 공백허용함 (line까지)
                                 // sizeof temp == sizeof(temp)
 
 char* pn = new char[strlen(temp) + 1]; // null문자땜에 크기를 +1하여 그 크기만큼 new로 동적할당
 strcpy(pn, temp); // 문자열의 대입은 strcpy를 사용하자, 갯수까지 정하고 싶으면 strncpy
 return pn;
}

반응형
Posted by Rainfly
l