Bus error: 10 using malloc on struct pointer, C
Bus error: 10 using malloc on struct pointer, C
我正在尝试为结构指针分配一些内存。代码编译正常,但是当我 运行 它时,我得到总线错误:用户输入他们的名字后 10。我不确定自己做错了什么,非常感谢您的帮助!
提前致谢:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(){
struct name{
char *first;
char *last;
};
struct name *user;
char temp[10];
printf("What is your first name?\n");
scanf("%s", temp);
user->first = (char*) malloc(strlen(temp)+1);
strcpy(user->first, temp);
printf("What is your last name?\n");
scanf("%s", temp);
user->last = (char*) malloc(strlen(temp)+1);
strcpy(user->last, temp);
printf("Your name is %s %s\n", user->first, user->last);
free(user->first);
free(user->last);
user->first = NULL;
user->last = NULL;
}
您没有分配内存供 user
指向。因此它未初始化并试图取消引用该指针导致 undefined behavior.
您需要为 user
分配内存,就像您为其字段所做的那样:
struct name *user = malloc(sizeof *user);
我正在尝试为结构指针分配一些内存。代码编译正常,但是当我 运行 它时,我得到总线错误:用户输入他们的名字后 10。我不确定自己做错了什么,非常感谢您的帮助!
提前致谢:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(){
struct name{
char *first;
char *last;
};
struct name *user;
char temp[10];
printf("What is your first name?\n");
scanf("%s", temp);
user->first = (char*) malloc(strlen(temp)+1);
strcpy(user->first, temp);
printf("What is your last name?\n");
scanf("%s", temp);
user->last = (char*) malloc(strlen(temp)+1);
strcpy(user->last, temp);
printf("Your name is %s %s\n", user->first, user->last);
free(user->first);
free(user->last);
user->first = NULL;
user->last = NULL;
}
您没有分配内存供 user
指向。因此它未初始化并试图取消引用该指针导致 undefined behavior.
您需要为 user
分配内存,就像您为其字段所做的那样:
struct name *user = malloc(sizeof *user);