Zwracanie tablicy przez funkcję

0

Cześć, mam krótkie pytanie. Kod:

 
int* X( )
{
	int arr[3];
	arr[ 0 ] = 1;
	arr[ 1 ] = 2;
	arr[ 2 ] = 3;

	return arr;
}

int main()
{
        int* a = X();
        return 0;
}

Czy to, że w tablicy a jest odpowiednia wartość(tablica{1, 2, 3}) to tylko przypadek? Wydaje mi się, że pamięć zajmowana przez arr może być w każdej chwili nadpisana, jednak chciałbym się upewnić.

0

Tak, masz rację.

1
azarien@mint13-vm ~ $ clang local.c
local.c:8:16: warning: address of stack memory associated with local variable 'arr' returned
      [-Wreturn-stack-address]
        return arr;
               ^~~
1 warning generated.
azarien@mint13-vm ~ $ gcc local.c
local.c: In function ‘X’:
local.c:8:9: warning: function returns address of local variable [enabled by default]
C:\pp\myprogs\cs>cl -c local.c
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50929 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

local.c
local.c(8) : warning C4172: returning address of local variable or temporary

1 użytkowników online, w tym zalogowanych: 0, gości: 1