C语言初始化错误怎么办,结构体变量的初始化错误
在Linux下編寫程序SqList.c如下
/**
*程序功能說明:順序表初始化
*/
#include
#include
/* In common use */
#define OVERFLOW -1
#define OK 1
#define LIST_INIT_SIZE 100 /* 線性表存儲空間的初始分配量 */
#define LISTINCREMENT 10 /* 線性表存儲空間的分配增量 */
typedef int ElemType;
typedef int Status;
typedef struct{
ElemType *elem; /* 存儲空間基址 */?/*a、問題在這里*/
int length; /* 當前長度 */
int listsize; /* 當前分配的存儲容量(以sizeof(ElemType)為單位) */
}SqList;
Status InitList_Sq (SqList *L)
{
/* 構造一個空的線性表L。*/
(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (! (*L).elem) exit(OVERFLOW); /* 存儲分配失敗 */
(*L).length = 0; /* 空表長度為0 */
(*L).listsize = LIST_INIT_SIZE; /* 初始存儲容量 */
return OK;
}/*InitList_Sq*/
int main()
{
int result = 0;
SqList *p = NULL; /*b*/
result = InitList_Sq(p);
printf(“The result is %d.\n”, result);
free(p);
exit(0);
}
編譯后執行程序時出現錯誤,錯誤代碼:
Segmentation fault
用gdb調試run指令提示如下:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004005b5 in InitList_Sq (L=0×0) at SqList.c:21
21??????? (*L).elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
查閱相關資料都說和指針未初始化,在我程序b處已經初始化p為NULL。請問這個問題該如何解決?
好長時間不用C了,都忘光啦!
總結
以上是生活随笔為你收集整理的C语言初始化错误怎么办,结构体变量的初始化错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hudson linux节点,Linux
- 下一篇: c语言编程平均分,用C语言编程平均分数