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;
}
'I.T > Programming' 카테고리의 다른 글
unexpected end of file while looking for precompiled header directive : compile error (0) | 2011.04.21 |
---|---|
함수오버로딩, 디폴트인자, 함수템플릿 (0) | 2011.04.08 |
함수를 가리키는 포인터변수 (0) | 2011.04.08 |
참조 전달 인자 '&' (0) | 2011.04.08 |
const (0) | 2011.04.08 |