割り当てられたメモリの世話をするためにuniqueとshared_ptrを使いたいと思います。しかし、私が見る限り、メモリへのアクセス(get、...)は常にconstであり、constポインタを返すので、格納されたメモリを操作することはできません。std :: shared_ptr(unique_ptr)でガードされたメモリを変更する方法
例:
std::unique_ptr<int[]> ptr(new int[42]);
memset(ptr.get(),0,42*sizeof(int)); //not possible ptr.get() returns const pointer
は仕事の周りにはありますか?メモリを操作する方法がない場合、そのようなインターフェイスを提供しないという設計上の理由は何ですか?
は、なぜあなたは 'memset'を使用するようにしたいですか?なぜ 'std :: unique_ptr'を 'std :: vector'の代わりに使うのですか? –
TartanLlama
std :: vector – user1235183
@ user1235183からメモリを盗むことはできません(リリースのような所有権を得てください)。これは 'const pointer'で、' constへのポインタ 'ではなく、問題のない内容を変更することができます。しかし、memsetのようなc関数を使いたいなら、いくつかのキャストが必要かもしれません。 – PeterT