很多次我遇到Buffer Overflow问题.
int y[10][10][10];
Run Code Online (Sandbox Code Playgroud)
...
y[0][15][3] = 8;
Run Code Online (Sandbox Code Playgroud)
我该如何防止这个问题?有什么好的工具可以帮助我吗?
Ric*_*dle 10
在一般情况下,Neil的答案更好,但是如果你有理由使用普通旧数组,你可以使用函数来获取和设置值,并检查你是否在数组边界内:
#define MAX_INDEX 10
int y[MAX_INDEX][MAX_INDEX][MAX_INDEX];
int get_y(int a, int b, int c)
{
ASSERT(a >= 0 && a < MAX_INDEX);
ASSERT(b >= 0 && b < MAX_INDEX);
ASSERT(c >= 0 && c < MAX_INDEX);
return y[a][b][c];
}
void set_y(int a, int b, int c, int value)
{
ASSERT(a >= 0 && a < MAX_INDEX);
ASSERT(b >= 0 && b < MAX_INDEX);
ASSERT(c >= 0 && c < MAX_INDEX);
y[a][b][c] = value;
}
Run Code Online (Sandbox Code Playgroud)
......理想情况下,所有人都在课堂上.
| 归档时间: |
|
| 查看次数: |
7208 次 |
| 最近记录: |