我想在C ++中编写一个指向文件的动态指针。
这是头文件中的声明:
byte* buffer;
然后在Cpp文件中,我分配了它:
buffer = new byte[1000];
但动态分配中的大小将大于1000。
然后我写信给文件:
ofstream myfile;
myfile.open("test.txt", ios::binary);
myfile.write((char*)buffer, 1000);
myfile.close();
如果我将缓冲区的长度指定为1000,那么1000之后的其余字节将被丢弃。如果我使用:sizeof(缓冲区),则只写入1个字节。
如何获得缓冲区的动态大小?
答案 0 :(得分:11)
简单:
std::vector<byte> buffer;
buffer.resize(1000);
myfile.write(&buffer[0], buffer.size());
答案 1 :(得分:0)
缓冲区的大小是1000.确实,当你使用“new”时,它有时可以分配更多内存,但这样做是为了固定下一个“新”。因此,在1000个第一个字节之后分配的每个其他内存可能并且可能将在未来的“新”中使用 底线你不能,并且应该假设你有超过1000个字节。