[c++] 예제: 문자열 복사
//동적할당을 사용한 문자열 복사
#include <iostream>
using namespace std;
const int MAX_STR = 100;
int Min(int a, int b) {
return (a < b ? a : b);
}
int main()
{
//문자열을 복사하고 싶은데 문자열은 포인터이고 심지어 배열 크기가 다르다.
char str1[] = "Hello, World!";
char str2[MAX_STR]; //static array
//memcpy(destination,source,size) //copy size of src to dest
memcpy(str2, str1, Min(sizeof(str1), sizeof(str2)));
cout << str2 << endl;
//dynamic array
char* dynamic_array = new char[MAX_STR];
//dynamic array의 사이즈는 포인터 사이즈이므로 주의
memcpy(dynamic_array, str1, Min(sizeof(str1),MAX_STR));
cout << dynamic_array << endl;
cout << str1 << " " << str2 << " " << dynamic_array << endl;
cout << size_t(str1) << " " << size_t(str2) << " " << size_t(dynamic_array) << endl;
delete[] dynamic_array;
return 0;
}
//결과: 1014187947080 1014187947136 3017905820496
//정적은 스택에서 동적은 힙에서 관리하기때문에 주소적 차이가 난다.