내 함수에 정의되지 않은 동작이 있습니까? 로컬 변수 c가 있으므로 자동 위치에 있으므로 함수 실행 후 소멸됩니까? (범위의 끝)내 코드가 정의되지 않은 동작입니까
int* calculate(int* a,int* b)
{
int c=(*a)+(*b); //local variable c
return &c;
}
int main()
{
int a=12;
int b=23;
int* ptr=calculate(&a,&b);
std::cout<<*ptr<<endl;
}
예는 UB입니다. 지역 변수의 주소를 반환하고 있습니다. – juanchopanza
ok 고맙습니다;) –
ok 감사합니다. C 변수를 사용하지 않고 return (* a) + (* b); 그것도 정의되지 않은 동작이 될 것입니까? 지역 변수가 없으므로 –