C语言指针越界访问示例
来源:互联网 发布:2015年好听的网络歌曲 编辑:程序博客网 时间:2024/05/14 13:45
C语言对数组下标不做检查,指针常常越界访问;我们编程时要特别注意。
一、示范代码
#include<iostream.h>#include<memory.h>int a[10];int b[10];void main(){memset(a,0,sizeof(int)*10);memset(b,0,sizeof(int)*10);a[10]=10;cout<<b[0]<<endl;}
在上例中,编译链接通过,但程序运行结果 b[0]=10;
输出a[10]和b[0]地址:
#include <iostream.h>#include<memory.h>int a[10];int b[10];void main(){cout<<hex<<(unsigned int)&a[10]<<endl;cout<<hex<<(unsigned int)&b[0]<<endl;}
结果:
a[10] 地址为 0x41454c
b[0]地址为 0x41454c
备注:上述程序在vc6.0下编译,不同编译系统地址值可能不同;但a[10]和b[0]地址值始终相同。
二、解释
连续定义的全局变量在内存中是连续存放的,同时C对数组下标不做检查;指针越界访问内存,编译器不会提示错误。利用越界的指针读写内存,轻则程序结果错误,重则直接导致程序崩溃。
- C语言指针越界访问示例
- C语言的越界访问
- C语言指针越界与野指针
- C/C++常见指针错误 and 内存访问越界
- C语言中数组越界访问造成死循环现象
- c语言中越界访问是不会报错的
- 自身对C语言数组越界访问的简易理解
- C语言字符指针访问
- C经典指针越界问题
- 12.3 C语言指针的简单示例
- C语言中的数组越界
- C语言中的数组越界
- C语言中的数组越界
- C语言使用指针访问数组
- C语言指针访问数组元素
- C语言结构体之指针访问
- C语言:用指针访问数组元素:
- C语言:一级指针,二级指针,三级指针,指针数组,数组指针的综合示例
- 再谈C语言可变参数
- S3C2440的时钟体系
- java语言打印一个4*12长方形-作者:逝秋
- Handling websocket connections with Adobe AIR ServerSocket
- 网线标准------用水晶头制网线
- C语言指针越界访问示例
- opencv for python 之 创建图片绘制简单几何图形
- MySql单表的大小限制
- 《大道至易——实践者的思想》勘误【2012.12】
- 全国省市数据库
- as3 Air ServerSocket支持websocket,实现服务端websocket
- GetLogicalDriveStrings
- 深入浅出—设计模式重要原则
- 巧妙的斐波那契