rsZheng4916 2021-12-02 16:32 采纳率: 60%
浏览 73
已结题

顺序表释放内存提示Unknown signal

img


错误如上图,源代码如下,小明求解答!


#include"stdio.h"
#include"stdlib.h"

#define MaxSize 100
typedef int ElemType;

// 声明顺序表的结构体类型
typedef struct{
    ElemType *elem; // 线性表数据存放的空间
    int length;        // 当前线性表的长度
}SqList;            // 定义数据类型的名称

/**
 * @brief  * 初始化线性表
 * 构造一个空的线性表,申请存储空间
 */
void InitList(SqList *L){
    // 申请空间,分配内存
    L->elem = (ElemType *)malloc(sizeof(ElemType)*MaxSize);
    // 分配失败
    if(L->elem == NULL){
        printf("内存分配失败!\n");
        exit(1);
    }
    // 初始化当前线性表的长度
    L->length = 0;
    printf("内存分配成功!\n");
}

/**
 * @brief 插入元素
 * @param i 插入逻辑[下标]位置
 * @param e 插入值
 */
void ListInsert(SqList *L,int i,ElemType e){
    // 插入值非法
    if(i < 0 || i > L->length){
        printf("插入位置非法!\n");
        exit(1);
    }
    // 存储空间已满
    if(L->length >= MaxSize){
        printf("顺序表存储空间已满!\n");
        exit(1);
    }
    // 插入
    for(int j = L->length-1;j >= i;j--)
        L->elem[j+1] = L->elem[j];
    L->elem[i] = e; // 在位置i插入数据e
    L->length++;    // 顺序表长度加1
}

/**
 * @brief 释放内存
 */
void FreeList_Sq(SqList *L){
    if(L == NULL){
        return ;
    }
    if(L->elem != NULL){
        free(L->elem);
        L->elem = NULL;
    }
    free(L);
    return;
}

int main(){
    SqList L;
    int n,e;        // n插入元素个数,e插入元素
    // 初始化
    InitList(&L); 
    // 插入元素
    printf("请输入顺序表的大小:");
    scanf("%d",&n);
    printf("输入顺序表的元素:");
    for(int i = 0;i < n;i++){
        scanf("%d",&e);
        ListInsert(&L,i,e);
    }
    // 销毁
    FreeList_Sq(&L);

    return 0;
}

以上是代码,断点测试提示这个错误,如图,

img

  • 写回答

1条回答 默认 最新

  • ty94666 2021-12-02 17:10
    关注

    我推荐你使用c++11的智能指针解决内存释放的问题,不需要手动去释放了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月1日
  • 创建了问题 12月2日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗