函数内new分配内存报错

今天写一个顺序表的时候分配内存报错,尝试了好久不知道为什么
代码:

class List{
public:
int* data;
int lenth;

void InitList(List* &L);
void Destory(List* &L);

};
void List::InitList(List* &L){
L->data = new int[100];
L->lenth = 0;
}

void List::Destory(List* &L){
if(!L)
delete[] L->data;
}

int main()
{
List* L1;
L1->InitList(L1);
L1->Destory(L1);
return 0;
}

这一行报错,L->data = new int[100];

什么错误提示?供参考:

#include <stdio.h>
class List {
public:
    int* data;
    int lenth;

    void InitList(List*& L);
    void Destory(List*& L);
};
void List::InitList(List*& L) {
    L->data = new int[100];
    L->lenth = 0;
}
void List::Destory(List*& L) {
    if (!L)
        delete[] L->data;
}
int main()
{
    List* L1;
    L1 = new List; //给 L1 new 个对象
    L1->InitList(L1);
    L1->Destory(L1);
    return 0;
}

很正常,你看你main 函数中L1 初始化了吗?没有初始化,那就是野指针了