문제가 있는지 확실하지 않은 문제가 발생했습니다. 그래서 같은 문자열에서 전달 숯불 *를 유도 할 수있는 간단한 C funcion 있습니다C에서 함수 매개 변수로 전달 된 문자 배열을 해제하는 방법
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
passString("hello");
return (EXIT_SUCCESS);
}
void passString(char * string) {
// .... some code ....
free(string); // ???
}
을하고 난 난 더 이상 (주로 배열) 작업을하고 있지 않다 메모리 블록을 무료로 배웠습니다. 그래서 비록 내 문자열을 무료로했지만 프로그램이 멈추거나 심지어이 간단한 예제와 충돌. 나는 정말로 여기에서 문자열을 자유롭게 할 필요가 있는지 없는지 잘 모르겠다. 그렇다면 나는 그것을 어떻게 성취 할 수 있는가?
@Kos : 틀린, 문자열 리터럴의 유형은 문자열 리터럴과 0 종결 자의 모든 문자에 대해 충분히 큰'N '을 갖는'char [N]'입니다. ''foobar ''의 타입은'char [7]'입니다. 다른 언어 (즉, C++)에는 차이가 있다고 생각합니다. – pmg
아 ~ 너 완벽하게 맞아. 사실 "const char *를 사용하여 문자열 리터럴을 참조하십시오"라는 의미였습니다. – Kos
@Kos : 문자열 리터럴 대신'char *'만 사용하는 것은 C가 아니라 C++에서 사용되지 않습니다. 그러나, 문자열 리터럴을 수정하는 것은 c와 C++ 모두에서 UB입니다. –