鱼C论坛

 找回密码
 立即注册
查看: 11699|回复: 12

C++:缓冲区溢出怎么解决

[复制链接]
发表于 2020-4-9 19:54:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 缘丿谁懂我一生 于 2020-4-9 21:09 编辑

警告        C6386        写入到“newSpace”时缓冲区溢出: 可写大小为“newSize*4”个字节,但可能写入了“8”个字节。
                
                Worker** newSpace = new Worker * [newSize];
                
                Worker* worker = NULL;
                        
                newSpace[i + this->m_Number] = worker;
                }
类声明:
class WorkerManger
{
public:

        //职工人数
        int m_Number = 0;
        //职工数组指针
        Worker** m_EmpArray  = NULL;

private:

};
//职工抽象类
class Worker
{
public:
        //显示个人信息
        virtual void showInfo() = 0;
        //获取岗位名称
        virtual string getDeptName() = 0;
        //职工编号
        int m_Id=0;
        //职工姓名
        string m_Name;
        //部门编号
        int m_DeptId=0;

};

职工管理系统(副本).zip

4.2 KB, 下载次数: 6

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-9 20:15:13 | 显示全部楼层
只有这一点代码,你要别人去猜剩下的那一部分代码吗?

把代码贴完整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-9 20:25:08 | 显示全部楼层
人造人 发表于 2020-4-9 20:15
只有这一点代码,你要别人去猜剩下的那一部分代码吗?

把代码贴完整

这不只是局部错误吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-9 20:28:10 | 显示全部楼层
这是目前的全部了

职工管理系统(副本).zip

4.2 KB, 下载次数: 9

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 20:47:42 | 显示全部楼层

错误确实是局部的,但是定位错误需要从全局着手
举个例子
Worker** newSpace = new Worker * [newSize];

看到这一行,我需要知道 Worker 的类型,你给出的这个代码中我找不到 Worker 的定义,不知道 Worker 的类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 21:30:32 | 显示全部楼层
本帖最后由 人造人 于 2020-4-9 21:49 编辑

没有找到你说的问题,但是找到了一堆其他问题(内存泄漏问题)
没有帮你找全,剩下的你自己找

1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 21:43:33 | 显示全部楼层
犯了一个低级错误,抱歉
另外,没有找到你说的那个问题

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 21:46:37 | 显示全部楼层
一个new对应一个delete,记住了吗?
代码成对编写,好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-9 22:08:41 | 显示全部楼层
人造人 发表于 2020-4-9 21:46
一个new对应一个delete,记住了吗?
代码成对编写,好吗?

我的vs2019有这个警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-9 22:09:43 | 显示全部楼层
QQ截图20200409220923.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 22:57:08 | 显示全部楼层

你能想办法让这个 “可能” 成真吗?
我想看看写入8个字节的情况
我怎么看代码都想不到如何写入这8个字节
我不知道导致这个问题的原因,也就没办法解决这个问题
除非你让这个问题出现,不能重现的问题很难解决
而这个问题干脆就没有发生过,我没办法

还有,你还是喜欢发局部的代码,这次是局部的图片
知道吗,看这个图片的时候,我还是不得不打开之前下载你的代码,因为图片上面的代码不全,我没办法判断问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-24 21:45:17 From FishC Mobile | 显示全部楼层
请问这个问题解决了吗,我也遇到了同样的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-24 21:49:33 From FishC Mobile | 显示全部楼层
人造人 发表于 2020-4-9 22:57
你能想办法让这个 “可能” 成真吗?
我想看看写入8个字节的情况
我怎么看代码都想不到如何写入这8个字 ...

名字比如张三有四个字节,那加上两个编号必然超过四个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表