社区
C++ 语言
帖子详情
C++ 越界问题
malone1
2011-08-19 10:15:24
struct A
{
int m_b;
int m_c;
}
char * buf= new char;
A * Aptr= (A *)buf;
Aptr->m_b=4;
Aptr->m_c=5;
这样程序虽然可以运行,但是存在越界问题?
...全文
240
16
打赏
收藏
C++ 越界问题
struct A { int m_b; int m_c; } char * buf= new char; A * Aptr= (A *)buf; Aptr->m_b=4; Aptr->m_c=5; 这样程序虽然可以运行,但是存在越界问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
malone1
2011-09-05
打赏
举报
回复
Abel Lee
2011-08-19
打赏
举报
回复
轻则程序崩溃,重则系统崩溃,永远记住不要对你不可用的内存赋值!!!
野男孩
2011-08-19
打赏
举报
回复
错误就是错误,没表现出来,那也是错误。别玩火~~
pathuang68
2011-08-19
打赏
举报
回复
buf除了第一个char是可以确定的外,其后的内容皆不能确定。
C和C++给了程序员很多自由,但自由也同时意味着责任。
jernymy
2011-08-19
打赏
举报
回复
等着崩溃吧
turing-complete
2011-08-19
打赏
举报
回复
显然越界了,你是想验证错误,但是没有得到错误吧。 呵呵,这种错误才是最厉害的错误。
品茶
2011-08-19
打赏
举报
回复
等着崩溃吧
至善者善之敌
2011-08-19
打赏
举报
回复
拉登来了。。。
小庙拜大神
一叶之舟
2011-08-19
打赏
举报
回复
当然了,A占8个字节,new char;只分配了一个字节,肯定会越界。
可以这样做:
char * buf= new char[sizeof(A)];
A * Aptr= (A *)buf;
Aptr->m_b=4;
Aptr->m_c=5;
xiaoguangzaia
2011-08-19
打赏
举报
回复
只申请了sizeof(char)大小的内存
实际操作了sizeof(A)大小
gykgod
2011-08-19
打赏
举报
回复
LZ 您是对的
可能会写非法内存
buf只有一个字节是合法的 往这个字节后面再写就写到别人那里了 覆盖了别的数据
珍惜生命远离CPP
2011-08-19
打赏
举报
回复
是,越界了
后果未知
再次启程
2011-08-19
打赏
举报
回复
越界了,这样可能无意中修改了某些未知的量,造成不可预测的后果
Saingel
2011-08-19
打赏
举报
回复
既然LZ这样写,那个性到底
char * buf= new char[sizeof(A)];
v_table
2011-08-19
打赏
举报
回复
c++让您这么用,斯特鲁普情何以堪。。
kkrmr
2011-08-19
打赏
举报
回复
有用。。
C/
C++
指针经典资料大全
C/
C++
指针经典资料大全,十余部经典资料书籍,是您精通C指针的理想教程。
C/
C++
程序设计员应聘常见面试试题深入剖析
C/
C++
程序设计员应聘常见面试试题深入剖析,不看会后悔!!!!!!!!!
C/
C++
指针的13份资料
C/
C++
指针的13份资料 内容丰富,让编程人员不再害怕指针
C++
vector
越界
问题
完全解决方案:从基础防护到现代
C++
新特性
优先使用范围for循环:避免显式索引,减少
越界
风险安全场景用at():用户输入、网络数据解析等不可控场景性能场景用operator[]+手动检查:内部算法、固定长度数据
C++
20项目采用std::span:函数参数传递子序列,自动边界检查开发阶段启用ASAN:编译时添加,捕获隐藏
越界
编译期检查用:
C++
20及以上,初始化阶段暴露错误vector
越界
问题
的解决需结合编码规范工具检测与语言特性基础层at()operator[]+手动检查、迭代器/范围for循环增强层:
C++
17。
C++
内存
越界
问题
全解析
C++
内存
越界
问题
摘要(150字) 内存
越界
是
C++
中访问超出分配内存范围的危险行为,属于未定义行为。常见场景包括数组
越界
、动态内存
越界
、容器
越界
访问、字符串操作
越界
和指针
越界
。危害包括数据损坏、程序崩溃、安全漏洞和难以复现的错误。检测手段有编译器工具(ASan/UBSan)、内存调试工具(Valgrind)、静态分析工具和代码检查。预防措施建议:优先使用现代
C++
容器(vector/string)、严格边界检查、避免裸指针操作、利用工具链检测。内存
越界
问题
隐蔽性强,应通过规范编码和工具辅助从源头预防。
C++ 语言
65,209
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章