vs2019,数组嵌套,警告C6385,读取无效,可读大小为n,但可能读取了x个字节 警告C6386,写入时缓冲区溢出

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

vs2019,数组嵌套,警告C6385,读取无效,可读大小为n,但可能读取了x个字节
警告C6386,写入时缓冲区溢出

问题相关代码,请勿粘贴截图

void LRU()
{
    //为每一个用到的页面设置一个时钟,用到就开始计时,执行一条新指令,时钟+1,如果遇到相同页面,将时钟值置0
    //int clock[page[i]]
    //给每个页面做一个标记 bool pflag[page[i]]
    bool pflag[320] = { false };
    int clock[320] = { 0 };

    double hit = 0;//记录击中次数
    double miss = 0;//缺页次数
    int flag = 0;//0 :hit;1:miss
    int mflag = 0;//是否写入空闲块

    int p=0;

    //每次使用新算法 都要将内存块置空
    for (int m = 3; m < 32; m++)
    {
        men[m] = -1;
    }
    for (int i = 0; i < tins; i++)//执行320条指令
    {

        for (int m = 3; m < 32; m++)//查看指令对应页是否已经写入内存块中
        {
            if (men[m] == page[i])//在内存块中
            {
                hit++;//命中次数+1
                flag = 1;//标记是否命中
             **   p = page[i];
                clock[p]++;//把这页加上时钟
                pflag[p] = true;//这页出现过**
                if (pflag[p] == true)//下次再出现同一页
                {
                    clock[p] = 0;//重新计时
                }
                break;//命中就可以退出小循环
            }
            else { flag = 0; }
        }
        if (flag == 0)//缺页
        {
            miss++;//缺页次数+1
            for (int m = 3; m < 32; m++)
            {
                if (men[m] == -1)//找到空闲块
                {
                    men[m] = page[i];
                    p = page[i];
                    clock[p++];
                    pflag[p] = true;//这页出现过
                    if (pflag[p] == true)//下次再出现同一页
                    {
                        clock[p] = 0;//重新计时
                    }
                    mflag = 1;//标记找到空闲块
                    break;//找到一块空闲块就退出
                }
                else { mflag = 0; }
            }
            if (mflag == 0)//没有空闲块 采用最近最久未使用置换法:置换最近一段时间最久用不到的页面
            {
                int k = 0;
                int max = clock[page[0]];
                for (int str = 0; str < i; str++)//扫描前面的页面
                {
                    if (clock[page[str]] > max)
                    {
                        max = clock[page[str]];
                        k = str;
                    }
                }
                men[k] = page[i];
            }

        }
    }
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

越界的问题只能自己去找
可以加个try,catch,打印越界时的索引,看到底是什么变量越界,越界的时候数值是多少
你的代码不全,很多变量的定义没有
但是我随便一看,就看到你的m为什么是从3开始遍历的,0,1,2呢干什么去了