MEMCMP 奇怪地无法返回数组

memcmp strangely fails returning array

本文关键字:返回 数组 MEMCMP      更新时间:2023-10-16

我有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 equalnn", (memcmp(arr1, ArrayGenerator(), 1) == 0) ? "" : "not");
    printf("arrays are %s equalnn", (memcmp(arr1, ArrayGenerator(1), 1) == 0) ? "" : "not");
}

第一个给了我"平等",第二个给了我"不平等"。

这是为什么呢?

不能从函数返回本地指针。当您从函数返回 temp 时,它会超出范围,内存不再有效。这会导致未定义的行为。我已经在这里解释过了