gpt4 book ai didi

c - 访问动态分配的结构成员时为 "Segmentation fault"

转载 作者:行者123 更新时间:2023-12-04 11:04:22 24 4
gpt4 key购买 nike

<分区>

我已经开始研究一个程序,它实现了一个名为“PhoneBook”的结构,它有两个成员:“length”和“allocatedSpace”,都是“unsigned int”类型。该结构是动态分配的。该结构的两个成员在名为“InitializePhoneBook”的外部函数中分配。现在,当我尝试在“main”函数内打印结构的两个成员的值时,出现“段错误”错误。

电话本.h

#ifndef PHONEBOOK_H
#define PHONEBOOK_H

struct PhoneBook
{
unsigned int length;
unsigned int allocatedSpace;
};

void InitializePhoneBook(struct PhoneBook *phoneBook);
void ClearPhoneBook(struct PhoneBook *phoneBook);

#endif

电话本.c

#include <stdlib.h>

#include "PhoneBook.h"

void InitializePhoneBook(struct PhoneBook *phoneBook)
{
phoneBook = malloc(sizeof(struct PhoneBook) * 1);

phoneBook->length = 0;
phoneBook->allocatedSpace = 1000;
}

void ClearPhoneBook(struct PhoneBook *phoneBook)
{
free(phoneBook);
}

主.c

#include <stdio.h>
#include <stdlib.h>

#include "PhoneBook.h"

int main(void)
{
struct PhoneBook *phoneBook;

InitializePhoneBook(phoneBook);

printf("%d %d\n", phoneBook->length, phoneBook->allocatedSpace);

ClearPhoneBook(phoneBook);

return 0;
}

用“gdb”运行“./a.out”我得到:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400621 in main () at ./main.c:12
12 printf("%u %u\n", phoneBook->length, phoneBook->allocatedSpace);

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com