【vs code中c++使用system(“pause”)暂停,该行标黄的原因及解决办法】

        在做顺序表的查找时遇到一个问题:使用system("pause")暂停程序时,exe文件一闪而过,之后system("pause")语句标黄,并提示:Unknown signal的异常(如图):        当时看了半天没有看出问题,之后查阅相关资料发现是内存分配异常的缘故,需要内存大于分配内存,程序并不会直接报错,修改之后程序正常运行。

修改前:

#include<iostream>
using namespace std;
typedef int KeyType ;
typedef int InfoType; 
#define MAXSIZE 1000
typedef struct{
    KeyType key;
    InfoType otherinfo;
}ElemType;
typedef struct{
    ElemType *elem;//数据元素存储空间基址,建表时按实际长度分配,0号单元留空
    int length;//表的长度
}SSTable;
int Search_Seq(SSTable ST,KeyType key)
{//在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为
 //该元素在表中的位置,否则为0。
    int i;
    ST.elem[0].key=key;//设置“哨兵”
    for(i=ST.length;ST.elem[i].key!=key;i--);//从后往前找
    return i;//找不到时,i为0
}
int main()
{
    SSTable T;
    int a[12]={0,21,37,88,19,92,5,64,56,80,75,13};
    T.elem=(ElemType*)malloc(sizeof(T.length+1)*2);
    T.length=11;
    for(int i=1;i<=11;i++)
        T.elem[i].key=a[i];
    printf("%d\n",Search_Seq(T,92));
    system("pause");
}

修改后

#include<iostream>
using namespace std;
typedef int KeyType ;
typedef int InfoType; 
#define MAXSIZE 1000
typedef struct{
    KeyType key;
    InfoType otherinfo;
}ElemType;
typedef struct{
    ElemType *elem;//数据元素存储空间基址,建表时按实际长度分配,0号单元留空
    int length;//表的长度
}SSTable;
int Search_Seq(SSTable ST,KeyType key)
{//在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为
 //该元素在表中的位置,否则为0。
    int i;
    ST.elem[0].key=key;//设置“哨兵”
    for(i=ST.length;ST.elem[i].key!=key;i--);//从后往前找
    return i;//找不到时,i为0
}
int main()
{
    SSTable T;
    int a[12]={0,21,37,88,19,92,5,64,56,80,75,13};
    T.elem=(ElemType*)malloc(MAXSIZE);
    T.length=11;
    for(int i=1;i<=11;i++)
        T.elem[i].key=a[i];
    printf("%d\n",Search_Seq(T,92));
    system("pause");
}

        这回直接malloc一个比较大的空间,问题解决。(但是我不知道为啥之前申请的空间大小不够qaq)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值