다음 두 코드는 비슷하지만 첫 번째 코드는 구조가 있고 두 번째 코드는 구조가 아닙니다.* main에 char *와 struct에 * char
왜이 코드가 작동하는지 (경고 없음)?
#include <stdio.h>
#include <string.h>
struct prova
{
char *stringa;
};
int main()
{
struct prova p;
strcpy (p.stringa, "example\0");
printf("%s\n", p.stringa);
return 0;
}
다음 코드는 작동하지 않습니까? 이 경고와
Segmentation fault (core dumped)
:
code.c: In function ‘main’: code.c:8:9: warning: ‘stringa’ is used uninitialized in this function [-Wuninitialized] strcpy (stringa, "example\0");
#include <stdio.h>
#include <string.h>
int main()
{
char *stringa;
strcpy (stringa, "example\0");
printf("%s\n", stringa);
return 0;
}
감사합니다!
'stringa'에 대한 메모리를 할당하지 않았습니다. 그것은 효과가있을 수도 있지만 그렇지 않을 수도 있습니다. 첫 번째 예제에서 더 큰 문자열을 넣어보십시오. – m0skit0
그래, 그게 잘못 알고,하지만 왜 첫 번째 코드가 작동하는지 이해가 안돼! (고맙습니다.) –
메모리가 할당 된 방법에 대한 내부 구조 때문입니다. 첫 번째 예제는 초당 할당량보다 많은 메모리를 할당하거나 다른 방식으로 할당합니다. 이는 컴파일러에 따라 다르며 아마도 다른 컴파일러/플랫폼을 사용하면 다른 결과가 나타납니다. – m0skit0