[英]“Segmentation fault (core dumped)” error when using malloc function
使用 malloc function 時出現“Segmentation fault (core dumped)”錯誤。 我了解到malloc的初始化值是用垃圾memory填充的。 這部分是否出現Segmentation fault錯誤?
#include <stdio.h>
#include <stdlib.h>
int chnum;
char *getstr(void)
{
char *str1 = (char *)malloc(sizeof(char) * chnum);
printf("Write a string: ");
gets(str1);
return str1;
}
int main(void)
{
printf("What is the maximum length of a string? ");
scanf("%d",chnum);
char *set = getstr();
printf("string : %s \n",set);
free(set);
return 0;
}
sizeof(char)
因為它是定義 1gets
而是使用fgets
scanf
中,將指針傳遞給 object 而不是 object 本身。getstr
)#include <stdio.h>
#include <stdlib.h>
char *getstr(size_t chnum)
{
char *str1 = malloc(chnum);
if(str1)
{
printf("Write a string: ");
fgets(str1, chnum, stdin);
printf("\n");
}
return str1;
}
int main(void)
{
size_t chnum;
printf("What is the maximum length of a string? ");
if(scanf("%zu", &chnum) == 1)
{
printf("\n");
fgetc(stdin);
char *str = getstr(chnum);
if(str)
{
printf("string : %s \n",str);
free(str);
}
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.