함수를 사용하여 문자열 배열을 재 할당하고 싶습니다. 여기에 설명 할 아주 간단한 프로그램을 쓴다. 나는 편지 "b"가 출력 되길 기대하지만 나는 NULL을 얻는다.C : 문자열의 배열을 다시 할당하십시오.
void gain_memory(char ***ptr) {
*ptr = (char **) realloc(*ptr, sizeof(char*) * 2);
*ptr[1] = "b\0";
}
int main()
{
char **ptr = malloc(sizeof(char*));
gain_memory(&ptr);
printf("%s", ptr[1]); // get NULL instead of "b"
return 0;
}
대단히 감사합니다.
'realloc '의 반환 값을 캐스트하지 마십시오. 이것은 결국 C입니다. (그렇게하면 컴파일러가 다르게 알려주는 문제를 숨길 수 있습니다.) –
또한 재 할당하려는 포인터에 즉시'realloc'의 결과를 할당하지 마십시오. 'realloc'이 실패하면 원래의 포인터를 잃어 버리고 메모리가 유실되었습니다. (아, 할당 실패 여부도 확인하십시오.) – jamesdlin