#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a[10];
a[2] = (int*)malloc(sizeof(int));
a[2][3]=4;
printf("%d", a[2][3]);
return 0;
}
我只给了指针变量的单个int
的内存。我如何能够在索引3
处访问单个int
的指针的元素?
答案 0 :(得分:1)
您可以尝试,但程序的行为将未定义。
C不会在运行时执行这种检查。
答案 1 :(得分:1)
这是因为没有任何东西阻止你访问数组越界,这会调用未定义的行为。可以看到程序的任何预期或意外行为。
答案 2 :(得分:1)
您正在访问一些随机设置的RAM元素。这是一个常见的C编程错误,也是导致许多安全漏洞的原因之一。
Heartbleed错误就是一个很好的例子,人们可以通过访问数组结构之外的元素来读取服务器RAM的大部分内容。