2

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(buffer)を使用すると、1バイトしか書き込まれません。

バッファの動的サイズを取得するにはどうすればよいですか?

4

2 に答える 2

11

単純:

std::vector<byte> buffer;
buffer.resize(1000);
myfile.write(&buffer[0], buffer.size());
于 2012-05-22T09:31:39.217 に答える
0

バッファのサイズは1000です。「new」を使用すると、より多くのメモリを割り当てることができる場合がありますが、これは次の「new」を固定するために行われます。したがって、最初の1000バイトの後に割り当てられた他のすべてのメモリは、将来の「新規」で使用される可能性があり、おそらく使用される予定です。
結論として、1000バイトを超えることはできず、想定する必要があります。

于 2012-05-22T09:34:28.043 に答える