C/C++에서는 함수가 끝나기 전에 new/malloc
메모리가 delete/free
이되어야한다고하는 상식 인 것 같습니다. 맞습니까?'new/malloc'이 '삭제/해제'해야합니까?
그러나이 consumer
이 후자의 이러한 버퍼를 소비 할 또 다른 기능,
void reader(ifstream &ifs)
{
char *buf = new char[100];
ifs.read(buf, 100);
save_buffer(buf); //save this buf into a global array, say buf_array[10]
}
void consumer()
{
for(int i = 0; i < 10; i++)
consume(buf_array[i]); //do something with those buffers read by reader
}
내 문제가, 나, 버퍼로 파일에서 청크를 읽어들이는 기능 reader
이 이런 종류의 문제가 있다고 가정 많은 메모리 리소스는 reader
안에 new
이 있지만 reader
은 consumer
에 의해 사용되지 않았기 때문에 delete
수 없습니다. 해당 버퍼를 delete
에 대해 consumer
담당해야합니까?
C++ 11을 사용하는 경우 이동 의미론이 도움이 될 수 있습니다. –
@VaughnCato, 고마워,하지만 지금은 사용하지 않을거야. – Alcott
저는 누가 책임이 있는지 명확하게 밝히는 것이 좋습니다. 누가 언제든지 메모리를 소유하고 있습니다. 소유권이 이전되고 있음을 나타 내기 위해 "acquire"및 "release"와 같은 단어가 포함 된 이름을 사용할 수 있습니다. 소유자는 메모리가 해제되었는지 확인해야합니다. –