저는 C++에 비교적 익숙합니다. 내가 버퍼 할당 해요 :데이터 삭제없이 "삭제"포인터
: 제 3 자 라이브러리를 사용하여uint8 *buffer = new uint8[len];
을, 나는 원시 이미지 데이터로 버퍼를 "인수"하기 위해 "IMG"개체 (이 사진의)의 방법을 사용
img->SetBuffer((uint8*)data);
"take over"는 실제로 "img"객체가 "SetBuffer"가 "buffer"의 데이터를 가리키는 자체 포인터를 가지고 있음을 의미합니다. 그것은 모두 잘 작동하지만, 컴파일러는 메모리 누수에 대해 (경고가 아니라 오류)라고 불평합니다. 이 줄을 추가하면 SetBuffer 뒤에 "버퍼 삭제;"경고가 사라지지만 동시에 "img"는 공백 (데이터 없음)으로 끝납니다. 컴파일러 경고를 피하고 데이터를 유지하려면 어떻게해야합니까? 가리키는 데이터를 손상시키지 않고 "버퍼"포인터 자체 만 삭제할 수 있습니까? 나중에 코드에서 "img"개체를 삭제합니다.이 개체는 어쨌든 모든 이미지 데이터를 지 웁니다.
어떤 경우'[] buffer' 삭제해야합니다. – fredoverflow
아마도 이미지의 메모리를 삭제하지 않았을 것입니다. 그들은 둘 다 같은 장소를 가리키고 있다고 가정하기 때문에 하나만 삭제해야합니다. 포인터 중 하나를 통해 할당 된 mempry를 삭제했는지 확인하십시오. 해당 메모리 블록에서의 사용이 끝나면. 그건 그렇고, "delete [] x". –
컴파일러의 정확한 메시지는 무엇입니까? – molbdnilo