在C ++中获取动态指针的大小

时间:2012-05-22 09:29:57

标签: c++

我想在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个字节。

如何获得缓冲区的动态大小?

2 个答案:

答案 0 :(得分:11)

简单:

std::vector<byte> buffer;
buffer.resize(1000);
myfile.write(&buffer[0], buffer.size());

答案 1 :(得分:0)

缓冲区的大小是1000.确实,当你使用“new”时,它有时可以分配更多内存,但这样做是为了固定下一个“新”。因此,在1000个第一个字节之后分配的每个其他内存可能并且可能将在未来的“新”中使用 底线你不能,并且应该假设你有超过1000个字节。