传递给另一个函数时局部变量的数据损坏

时间:2013-05-30 09:26:36

标签: c corruption

将堆栈上的局部变量传递给函数调用时,数据损坏怎么可能?

{
    int Array[4];

    Array[0] = 1;
    Array[1] = 2;
    Array[2] = 3;
    Array[3] = 4;

    test_struct->arr = Array;
    //(Where arr is a pointer to array)
    Demo(test_struct);
}

如果将Array传递给另一个函数,会出现什么问题?有可能吗? 数据腐败?

1 个答案:

答案 0 :(得分:0)

好吧,如果Demo()有错误导致它写在Array的范围之外,它无法知道任何事情,那当然可以破坏内存,是的。

请注意,您无法在sizeof内使用Demo()来确定大小,您必须有一个单独的参数(或结构成员)来说明可用元素的数量。