如何在这个C程序中完成内存分配?

时间:2016-02-05 10:21:05

标签: c memory-management

#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的指针的元素?

3 个答案:

答案 0 :(得分:1)

您可以尝试,但程序的行为将未定义

C不会在运行时执行这种检查。

答案 1 :(得分:1)

这是因为没有任何东西阻止你访问数组越界,这会调用未定义的行为。可以看到程序的任何预期或意外行为。

答案 2 :(得分:1)

您正在访问一些随机设置的RAM元素。这是一个常见的C编程错误,也是导致许多安全漏洞的原因之一。

Heartbleed错误就是一个很好的例子,人们可以通过访问数组结构之外的元素来读取服务器RAM的大部分内容。