문자 * XX (숯불 * str을) 다음 strdup()를 사용하면 C에서 메모리 누수가 발생합니까?
{STR과 // CONCAT 기존 문자열 및 사용자 로 돌아} 그리고 난으로이 프로그램을 호출
XX (strdup("CHCHCH"));
윌이 strdup()
에서 생성되는 것을 방출하지 않으면 서 누출이 발생합니까?
XX()
의 결과는 무료 일 가능성이 낮습니다.
(C 및 C++ 모두에게 알려주십시오. 감사합니다.)
문자 * XX (숯불 * str을) 다음 strdup()를 사용하면 C에서 메모리 누수가 발생합니까?
{STR과 // CONCAT 기존 문자열 및 사용자 로 돌아} 그리고 난으로이 프로그램을 호출
XX (strdup("CHCHCH"));
윌이 strdup()
에서 생성되는 것을 방출하지 않으면 서 누출이 발생합니까?
XX()
의 결과는 무료 일 가능성이 낮습니다.
(C 및 C++ 모두에게 알려주십시오. 감사합니다.)
XX 함수가 free() 인수가 전달되지 않는 한, C와 C++ 모두에서 메모리 누수가 발생합니다.
예. 뭔가 free
의 결과는 strdup
입니다.
당신은 Boehm's garbage collector 사용을 고려하고 GC_strdup
& GC_malloc
대신 strdup
& malloc
사용할 수 있습니다; 호출에 대해 신경 쓸 필요가 없습니다. free
예 유출됩니다. strdup
의 결과를 공개해야합니다.
std::string XX(std::string const & in)
{
return in + std::string("Something to append");
}
이 당신이 무슨 말을하는지 구현하는 빠른 더러운 방법이지만, 그것은 매우 읽을 : C++에 대한
, 다른 한편으로는, 나는char*
보다는
std::string
를 사용하는 것이 좋습니다. 출력을 위해 문자열에 대한 가변적 인 참조를 전달함으로써 속도 향상을 얻을 수 있지만, 매우 단단한 루프에 있지 않으면 성능을 크게 높이 지 않고 복잡성이 증가 할 가능성이 있기 때문에 약간의 이유가 있습니다.