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

        在做顺序表的查找时遇到一个问题:使用system("pause")暂停程序时,exe文件一闪而过,之后system("pause")语句标黄,并提示:Unknown signal的异常(如图):【vs code中c++使用system(“pause”)暂停,该行标黄的原因及解决办法】_第1张图片        当时看了半天没有看出问题,之后查阅相关资料发现是内存分配异常的缘故,需要内存大于分配内存,程序并不会直接报错,修改之后程序正常运行。

修改前:

#include
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
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)

你可能感兴趣的:(一些bug,c++,开发语言,vscode)