함수에 char *이 필요한 경우 shared_ptr을 전달할 수 있습니까?raw 포인터 인수에 대한 shared_ptr
전체 텍스트 파일 (길이 = 100)을 읽고 char [char] 배열에 char을 저장하려고합니다. 물론
ifstream dictFile(fileName);
size_t fileLength = 100;
char* readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer, fileLength);
//processing readInBuffuer..............
delete[] readInBuffer;
dictFile.close();
예외는 삭제 [] 문 앞에 던져진다면 메모리 누수가 : 내가 사용하는 순진 방법이 있었다. 사용할 수 있는지 궁금하네요. shared_ptr readInBuffer (new char [fileLength]); 그러나 함수 프로토 타입
읽기 (의 char * s의 streamsize의 N)
이
입력으로 스마트 포인터를 받아 들일 것인가? 어떤 속임수?
편집 :이 같은 작성하려고 해요 :
shared_ptr<char[]> readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer.get(), fileLength);
를하지만 컴파일되지 않습니다.
[공유 \ _ptr에서 정상 ptr을 얻을 수 있습니까?] (http://stackoverflow.com/questions/505143/getting-a-normal-ptr-from-shared-ptr) –
당신은 이미 귀하의 질문에 대답 - 일반 포인터'get()'메서드를 가지고 있지 않지만 스마트 포인터 않습니다 그리고 당신이 요구하는 정확히 않습니다. –
'shared_ptr '은 배열을 관리 할만큼 똑똑하지 않습니다. 그러나 unique_ptr은 사용자 정의 deleter를 제공하면됩니다. –