У меня есть две очень похожие программы, как показано ниже.
Программа A: нет проблем при запуске,
#include <string.h>
#include <stdio.h>
typedef struct p_struct{
unsigned char* pulist;
int length;
} list_type;
int get_struct(list_type* l)
{
memset(l->pulist, 0, 4);
l->length=4;
}
int main ()
{
list_type str;
get_struct(&str);
}
Программа B: имеет дополнительный вызов функции, все еще компилируется, но завершается с ошибкой во время выполнения "Ошибка сегментации" с gcc.
#include <string.h>
#include <stdio.h>
typedef struct p_struct{
unsigned char* pulist;
int length;
} list_type;
int get_struct(list_type* l)
{
memset(l->pulist, 0, 4);
l->length = 4;
}
int get_struct_a()
{
list_type str;
get_struct(&str);
}
int main ()
{
get_struct_a();
}
Я действительно изо всех сил пытаюсь выяснить проблему здесь.Может кто-нибудь сказать мне, что вызывает "Ошибка сегментации"?Кроме того, почему программа B выдает ошибку «Ошибка сегментации», а программа A - нет?