memcmp奇怪地无法返回数组

时间:2014-01-07 17:14:25

标签: c++ memcmp

我的C ++代码如下所示:

static int* ArrayGenerator()
{
    int temp[1] = {9};
    return temp;
}

static int* ArrayGenerator(int i)
{
    //parameter is just for demonstration
    int temp[1] = {9};
    return temp;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int arr1[1] = {9};
    printf("arrays are %s equal\n\n", (memcmp(arr1, ArrayGenerator(), 1) == 0) ? "" : "not");
    printf("arrays are %s equal\n\n", (memcmp(arr1, ArrayGenerator(1), 1) == 0) ? "" : "not");
}

第一个让我'平等'第二个让我'是相等'。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

您无法从函数返回本地指针。当你从函数中返回temp时,它会超出范围而内存不再有效。这会导致未定义的行为。我已经解释了这个here