#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *func(char * str){
int len;
len=strlen(str)+3;
str = (char *)realloc(str,len);
return str;
}
void main(){
printf("str:%s",func("hello"));
}
마지막 ans는 "hello"문자열을 인쇄하는 대신 (null) 인쇄합니다. 아무도 왜 그렇게 설명 할 수 있습니까? 오류를 식별 할 수 없습니다. 누구든지 오류를 바로 잡을 수 있고 작동 코드를 알려줄 수 있습니까? 부디!왜이 경우 realloc이 제대로 작동하지 않았습니까?
'void main() {..'당연하지 .... –
재 할당 할 수없는 char *에 대해 realloc을 호출합니다. 따라서 실패하고 NULL을 반환합니다. –
질문에'dynamic-allocation' 태그가 붙어 있지만 아무 것도 보이지 않습니다 ... @WilliamPursell 'char const *'(문자열 리터럴 유형)을 전달하기 위해 경고를 생성하거나 컴파일하지 않아야합니다. func()에? 나는 대부분 모든 경고가있는 C++ 14를 프로그램합니다. 아마도 너무 좋은 타입 안전성에 익숙 할 것입니다 ... –