다음은 샘플 코드입니다. 내 applicaiton에서 사용하고있는 코드와 비슷한 샘플입니다.메모리 누출없이 const char * 초기화
#define STR_SIZE 32
void someThirdPartyFunc(const char* someStr);
void getString(int Num, const char* myStr)
{
char tempStr[] = "MyTempString=";
int size = strlen(tempStr) + 2;
snprintf((char*)myStr, size, "%s%d", tempStr, Num);
}
int main()
{
const char * myStr = new char(STR_SIZE);
getString(1, myStr); // get the formated string by sending the number
someThirdPartyFunc(myStr); // send the string to the thirdpartyFunction
delete myStr;
return 0;
}
이 코드를 사용하면 예외가 발생합니다. 문제는 "myStr"을 삭제하는 것입니다. 그러나 정말로 삭제가 필요합니다.
getString에서 문자열의 서식을 지정하고 ThirdPartyFunc로 보내는 다른 방법이 있습니까 ??
미리 감사드립니다.
내가하는 일을 잘 모르겠다. 대신'std :: string'을 쓰지 않는 이유는 무엇입니까? – Rapptz
'strlen (tempStr) + 2'에서'+ 2'가 왜 그렇게 설명 할 수 있습니까? –
왜'myStr'을'const char *'로 가져 와서 함수에서 const를 캐스팅하고 있습니까? –