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

わんくま同盟

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

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

■95414 / 6階層)  C++ サイズ0でnewした場合
□投稿者/ 774RR (816回)-(2020/07/29(Wed) 15:41:29)
#include <iostream>
#include <vector>
#include <conio.h>

#define ONETESTSIZE 1000000
#define REPEATURE 10
#define ALLOCTESTSIZE ONETESTSIZE*REPEATURE

void testfunc(std::vector<int*>& v) {
	for (int i = 0; i < ONETESTSIZE; ++i) {
		v.push_back(new int[0]);
	}
	std::cout << v.size() << std::endl;
	_getch();
}

int main()
{
	std::vector<int*> a;
	a.reserve(ALLOCTESTSIZE);
	for (int i = 0; i < REPEATURE; ++i) {
		testfunc(a);
	}
	return 0;
}

を VS2019 x86 Release と Debug で両方試してみた(コンパイルオプションは標準値)

100万回の new int[0] で
Release だと 19.6MiB プライベートワーキングセットが増える
Debug だと 46MiB 前後プライベートワーキングセットが増える
1回あたりだと Release=20byte Debug=48byte ってとこだろうか?
これを多いとみるか少ないとみるかは人それぞれだね


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[5]: 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
        └ Re[5]: C++ サイズ0でnewした場合 / 774RR (20/07/29(Wed) 13:11) #95410
          └ C++ サイズ0でnewした場合 / 774RR (20/07/29(Wed) 15:41) #95414 ←Now

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