Следующий код показывает, как я получаю размер файла определенного файла, чтобы потом создать достаточно большой буфер, чтобы я мог хранить все содержимое файла в этом буфере. Поэтому я выделил его в кучу, потому что я не мог знать, большой ли файл или нет и т. Д.
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
size_t filesize(FILE* f) {
size_t size;
fseek(f, 0L, SEEK_END);
size = ftell(f);
fseek(f, 0L, SEEK_SET);
return size;
}
char* read_file(std::string name) {
FILE* f;
fopen_s(&f, name.c_str(), "rb");
size_t size = filesize(f);
char* buffer = new char[size+1];
memset(buffer, 0, size+1);
fread(buffer, sizeof(char), size+1, f);
fclose(f);
return buffer; //this is the buffer with the content to send
}
int main() {
char* buffer = read_file("main.cpp");
printf("%s", buffer);
delete[] buffer;
buffer = nullptr;
getchar();
return 0;
}
Мой вопрос: успешно ли я удалил
char* buffer = new char[size+1];
из кучи, выполнив это:
char* buffer = read_file("main.cpp");
delete[] buffer;
buffer = nullptr;
Или оно все еще где-то осталось?
И если это произойдет, как бы я указал и удалил?
Любые другие советы о том, как обращаться с необработанными указателями, также приветствуются.