누군가가 우리 C++ 응용 프로그램에 함수를 작성했으며 이미 프로덕션에 포함되어 있으며 아직 응용 프로그램을 손상시키지 않는 이유를 알지 못합니다. 아래는 코드입니다. C++ 응용 프로그램의 정적 데이터 메모리 제한
char *str_Modify()
{
char buffer[70000] = { 0 };
char targetString[70000] = { 0 };
memset(targetString, '\0', sizeof(targetString));
...
...
...
return targetString;
}
당신이 볼 수 있듯이
는,이 함수는 지역 변수의 주소를 반환하고 할당 된 메모리는 함수가 반환되면 해제됩니다. 내 질문- 정적 데이터 메모리 한도 란 무엇입니까?
- 이 코드의 빠른 수정은 무엇입니까? 변수
targetString
을 정적으로 만드는 것이 좋은 습관입니까?
이 C 또는 C++입니까? 어떤 추가 제약이 있습니까? – hyde
정적이라면 코드 위의 굵은 주석과 h 파일의 모든 서명 : '문장이 안전하지 않음 - 여러 줄에서 소리내어 말하기'를 추가하십시오. Altrnatives는 공간을 할당하거나 호출자에게 버퍼를 제공하게하는 데, 둘 다 호출 코드를 변경해야합니다. –
오 - 원 저작자가 더 이상 귀사에 적합하지 않게하십시오. –