나는 C++을 사용하여 매우 새로운 것으로 시작해야한다고 생각합니다. 더 높은 수준의 언어에서 왔기 때문에 식별 할 수없는 기술적 인 문제가 누락되었을 수 있습니다.스트림을 사용하는 문자열 연결은 정크를 반환합니다.
const char * Point::toString() const {
std::ostringstream stream;
stream << "[" << x << ", " << y << "]"; //[3, 5] for example
return stream.str().c_str();
}
그때 이런 식으로 전화 해요 : :
Point p1 (3, 5);
std::cout << p1.toString() << std::endl;
그러나이 일부 정크를 인쇄
나는 다음과 같은 방법이있다.
내가 뭘 잘못하고 있니? 또한, 내 toString()
방법은 정말 효율적입니까? char *
을 새로 할당하여 메모리가 누출 되었습니까?
'std :: string Point :: toString() const {'을 사용하면 더 잘 작동 할 것입니다. 함수 범위가 남아있는 즉시 포인터는 무효화됩니다. –
@ πάνταῥεῖ 와우, 그게 문제를 해결했습니다! 지금 무슨 일이 일어 났는지 이해하고 있다고 생각합니다. –