C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■95410 / 5階層)  C++ サイズ0でnewした場合
□投稿者/ 774RR (815回)-(2020/07/29(Wed) 13:11:31)
new T[0] も delete[] nullptr; も完全に正当だし、オイラならその修正案は採用しないかな。
new T[0] で消費するメモリ量が実機で問題になるほどなら別だけど(実際問題としてありえない)

オーバーヘッドのオフィシャルな文書ってことだと見たことないな
$(VS20**)/VC/Tools/MSVC/version/crt/src/vcruntime 以下に new のソースがあるっぽいよ
# VS2019 で確認 VS2010 は手元にないのでわからない

デバッグモードとリリースモードではヒープ破壊検出のための無駄領域があったりなかったりするし
境界整合値とか L1 キャッシュ境界とかがコンパイルオプションで変わるはず。
なので具体的に何バイトってのは簡単にはわからない。
特定状況に限定するなら調べる価値はありそうだけど、手間の割に得られるものが少なすぎ:
オイラならそこんところは手を付けない。

何回 new T[0] したら何バイトを消費してプライベートワーキングセットがどれだけ増えるか?
を気にしてるんだろうけど、仮想記憶機構の配下では勝手にスワップされるわけだし無意味っぽい。
性能落ちを気にするのなら最初から new をしないように作るべきだ。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: C++ サイズ0でnewした場合 /az →Re[6]: C++ サイズ0でnewした場合 /774RR
 
上記関連ツリー

C++ サイズ0でnewした場合 / az (20/07/28(Tue) 14:06) #95391
Re[1]: C++ サイズ0でnewした場合 / 774RR (20/07/28(Tue) 15:30) #95394
  └ Re[2]: C++ サイズ0でnewした場合 / az (20/07/28(Tue) 16:19) #95398
    └ Re[3]: C++ サイズ0でnewした場合 / 774RR (20/07/28(Tue) 16:33) #95399
      └ Re[4]: C++ サイズ0でnewした場合 / az (20/07/29(Wed) 11:47) #95409
        └ C++ サイズ0でnewした場合 / 774RR (20/07/29(Wed) 13:11) #95410 ←Now
          └ Re[6]: C++ サイズ0でnewした場合 / 774RR (20/07/29(Wed) 15:41) #95414

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信