str2 = strdup(str);
이렇게 하면 안에서 내부적으로 str 문자열 길이 + 1 크기를 갖는 메모리를 malloc()으로 동적 할당해서
strcpy()로 문자열을 복사해 준 뒤 그 포인터를 리턴해 주는 함수임.
꽤 편한 함수임. 물론 malloc()으로 동적 할당한 메모리니깐 메모리 누수(memory leak)를 막기 위해서는
str2를 쓸 일이 더 이상 없어지면 free(str2);로 반드시 해제해 주어야 한다.
str2 = strdup(str);
이렇게 하면 안에서 내부적으로 str 문자열 길이 + 1 크기를 갖는 메모리를 malloc()으로 동적 할당해서
strcpy()로 문자열을 복사해 준 뒤 그 포인터를 리턴해 주는 함수임.
꽤 편한 함수임. 물론 malloc()으로 동적 할당한 메모리니깐 메모리 누수(memory leak)를 막기 위해서는
str2를 쓸 일이 더 이상 없어지면 free(str2);로 반드시 해제해 주어야 한다.
첨알았네 ㄷㄷ 그럼 C++의 new, delete로 대신 하는 함수는 없나..
그런 함수가 있을리가 :p 그냥 malloc, calloc 써야지 별 수 있겠음? ㅋ 원시 자료형이나 구조체 할당할 때는 malloc(메모리 할당), 배열 할당할 때는 calloc(연속 메모리 할당).
다만 malloc이든 calloc이든 메모리 해제는 둘 다 똑같이 free 함수를 이용해서 함. 혹자는 calloc은 cfree로 해제해야 한다고 주장하는데 cfree 함수는 비표준이니 절대 쓰지 말 것.
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.