char* pArray = nullptr;
{
char buffer[64];
sprintf_s(buffer,"Time: 123456");
pArray = buffer;
}
cout<<pArray<<endl;
버퍼가 스택에 다시 할당 해제 되더라도 "시간 : 123456"이 표시됩니다. 여기서 무슨 일이 일어나고있는거야? 이거 안전한가요? 안전하지 않음?C++ char 배열 범위
char* pArray = nullptr;
{
char buffer[64];
sprintf_s(buffer,"Time: 123456");
pArray = buffer;
}
cout<<pArray<<endl;
버퍼가 스택에 다시 할당 해제 되더라도 "시간 : 123456"이 표시됩니다. 여기서 무슨 일이 일어나고있는거야? 이거 안전한가요? 안전하지 않음?C++ char 배열 범위
정의되지 않은 동작. 메모리가 지워지지 않았을 수 있습니다.
귀하의 인쇄 진술서는 순수한 행운입니다. 객체가 범위를 벗어나거나 삭제되면 메모리는 해제 된 것으로 표시되고 실제로 지워지지 않습니다. 프로그램은 그것을 되 살리고 그것을 덮어 쓸 수 있습니다.
더 이상 메모리를 사용하지 않지만 데이터는 계속 남아 있습니다.
자신이하는 일을 알지 못한다면 그렇게해서는 안됩니다.
그런 해킹을 사용하여 일부 매개 변수를 함수에 전달할 수는 있지만 매우 안전하지 않습니다.
아니요, 안전하지 않습니다. 그것의'정의되지 않은 행동'. – scientiaesthete
같은 질문을하므로 20 ~ 30 개의 게시물이 있습니다. –