귀하가 들었던 내용은 이 아니며이 아닙니다.
const char *
을 반환하면 char *
을 반환해도 문제가없는 기능의 의미를 향상시킬 수 있습니다 (즉, 내가 제공 한 것을 사용하지 마십시오).
그러나, 어떤 경우에, 당신은 는 당신을 위해, 메모리 (즉 malloc
또는 new
을 사용하여 할당) my_function
에 힙에 할당 된 char *
또는 const char *
, 그렇지 않으면 때마다 my_function
수익을 돌려 있는지 확인해야합니다 [const] char *
이 할당 해제되고 잘못된 포인터에 액세스하게됩니다.
그리고 마지막으로 당신은 는 free
또는 delete
당신이 그것으로 완료하거나 메모리 누출 일단에 반환 한 경우 년대 [const] char *
을 기억해야합니다. C/C++ 같은 훌륭한 언어가 아닌가?
그래서, C에서, 당신은 당신이 "문자열 리터럴"를 반환하는 함수가있는 경우 다음이 * const를 문자를 반환해야합니다
const char *my_function() {
const char *my_str = (const char *)malloc(MY_STR_LEN + 1); // +1 for null terminator.
/* ... */
return my_str;
}
int main() {
const char *my_str = my_function();
/* ... */
free(my_str);
/* ... */
return 0;
}
main()은 항상 int를 반환해야합니다! http://users.aber.ac.uk/auj/voidmain.shtml – nmuntz