添加查看都没有问题,一删除就有问题了,一删除程序就退出了

问题遇到的现象和发生背景

在B站学C语言,照着黑马程序员的视频做的但是出现了问题

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
#include 
#define max 1000
using namespace std;

//联系人结构体
struct lian_xi_ren
{
    string m_name;
    int m_age;
    //性别,男为一女为二
    int m_Sex;
    string m_phone;
    string m_addr;

};
struct tong_xun_lu
{
    struct lian_xi_ren zui_da_rong_liang[max];
    int m_size;

};
//封装显示系统
void xian_shi_jie_mian() {
    cout << "***********************" << endl;
    cout << "*****1、添加联系人*****" << endl;
    cout << "*****2、显示联系人*****" << endl;
    cout << "*****3、删除联系人*****" << endl;
    cout << "*****4、查找联系人*****" << endl;
    cout << "*****5、修改联系人*****" << endl;
    cout << "*****6、清空联系人*****" << endl;
    cout << "*****0、退出联系人*****" << endl;
    cout << "***********************" << endl;
}
void tian_jia_lian_xi_ren(tong_xun_lu* abs)
{
    //判断通讯录是否已满
    if (abs->m_size == max)
    {
        cout << "通讯录已满" << endl;
        return;
    }
    else
    {//输入姓名
        string name;
        cout << "请输入姓名:" << endl;
        cin >> name;
        abs->zui_da_rong_liang[abs->m_size].m_name = name;
        //输入性别
        cout << "请输入性别" << endl;
        cout << "1,男" << endl;
        cout << "2,女" << endl;
        int sex = 0;
        cin >> sex;
        while (true) {
            if (sex == 1 || sex == 2) {
                abs->zui_da_rong_liang[abs->m_size].m_Sex = sex;
                break;
            }
            cout << "输入有误,请重新输入" << endl;
            break;
        }
        //输入年龄
        cout << "请输入年龄" << endl;
        int age;
        cin >> age;
        abs->zui_da_rong_liang[abs->m_size].m_age = age;
        //输入电话
        cout << "请输入电话" << endl;
        string phone;
        cin >> phone;
        abs->zui_da_rong_liang[abs->m_size].m_phone = phone;
    
    //输入地址
    cout << "请输入地址" << endl;
    string addr;
    cin >> addr;
    abs->zui_da_rong_liang[abs->m_size].m_addr = addr;
    //更新人数
    abs->m_size++;
    cout << "添加成功" << endl;
    system("pause");
    system("cls");
}
}
//显示联系人
void xian_shi_lian_xi_ren(tong_xun_lu* abs) {
    //当通讯录人数为0时,提示通讯录为空,请添加联系人
    //不为0显示通讯录联系人
    if (abs->m_size==0)
    {
        cout << "通讯录为空" << endl;
    }
    else {
        for (int i = 0; i < abs->m_size; i++)
        {
            cout << "姓名:" << abs->zui_da_rong_liang[i].m_name << "\t";
            cout << "性别:" << (abs->zui_da_rong_liang[i].m_Sex == 1 ? "男" : "女") << "\t";
            cout << "年龄:" << abs->zui_da_rong_liang[i].m_age << "\t";
            cout << "电话:" << abs->zui_da_rong_liang[i].m_phone << "\t";
            cout << "住址:" << abs->zui_da_rong_liang[i].m_addr << endl;
        }
    }
    system("pause");
    system("cls");
}
//查找联系人
//需要传入联系人检测是否有这个联系人,在进行对比
int cha_zhao_lian_xi_ren(tong_xun_lu * abs , string name) {
    for (int i=0;im_size;i++)
    {
        if (abs->zui_da_rong_liang[i].m_name ==name )
        {
            return i;//找到了返回人名
        }
            
    }
    return -1;//如果没找到返回一个-1
}
void delete_lian_xi_ren(tong_xun_lu* abs) {
    cout << "请输入你要删除的联系人" << endl;
    string name;
    cin >> name;
    int ret = cha_zhao_lian_xi_ren(abs, name); 
    if (ret != -1) {
        for(int i=ret;retm_size;i++)
        {
            //数据前移
            abs->zui_da_rong_liang[i] = abs->zui_da_rong_liang[i =i+ 1];
        }
        abs->m_size--;
        cout << "删除成功" << endl;
            
         }
    else {
        cout << "查无此人" << endl;
        system("pause");
        system("cls");
    }   
}
        
int main() {
    //创建通讯录结构体变量
    tong_xun_lu abs;
    abs.m_size= 0;
    int select = 0;//创建用户选择输入的变量
    //菜单调用
    
    
    while (true)
    {
        xian_shi_jie_mian();
        cin >> select;
        switch (select)
        {
            
         case 1://1、添加联系人
             tian_jia_lian_xi_ren(&abs);//利用地址传递添加联系人
            break;
         case 2: //2、显示联系人
             xian_shi_lian_xi_ren(&abs);
            break;
         case 3:// 3、删除联系人
              {
            cout << "请输入人名" << endl;
             string name;
             cin >> name;
            if (cha_zhao_lian_xi_ren(&abs, name) == -1) 
             {
             cout << "查无此人" << endl; 
              }
             else {
              cout << "找到此人" << endl;
            }
              }

         //delete_lian_xi_ren(&abs);
            break;
         case 4: //4、查找联系人

            break;
         case 5:// 5、修改联系人
            break;
         case 6: //6、清空联系人
            break;
         case 0:// 0、退出联系人
         cout << "欢迎下次使用" << endl;
         system("pause");
         return 0;
            break;
        }
    }
    system("pause");
    return 0;
}

运行结果及报错内容

添加查看都没有问题,一删除就有问题了,一删除程序就退出了


for(int i=ret;ret<abs->m_size;i++)
改成
for(int i=ret;ret<abs->m_size - 1;i++)
试试
for(int i=ret;i<abs->m_size-1;i++)
        {
            //数据前移
            abs->zui_da_rong_liang[i] = abs->zui_da_rong_liang[i+ 1];
        }