質問編集履歴

2

追記

2018/07/31 06:30

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -392,6 +392,6 @@
392
392
 
393
393
  ```
394
394
 
395
- おそらく、線形listのに、newを使って新たに領域を作り、そのポインタを連結させているんですかね・・・
395
+ おそらく、線形listのように、newを使って新たに領域を作り、そのポインタを連結させているんですかね・・・
396
396
 
397
397
  つまり・・・newで作成した領域を随時増やす、reallocみたいな関数はnewでは実現不可能・・・ということですかね。

1

追記

2018/07/31 06:30

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -349,3 +349,49 @@
349
349
 
350
350
 
351
351
  分かる方教えてください。環境は、g++ Linuxです。
352
+
353
+
354
+
355
+ ---
356
+
357
+ [追記]
358
+
359
+ vectorが伸びているのは、再度newを呼び出していました。
360
+
361
+ ```ここに言語を入力
362
+
363
+ pointer │
364
+
365
+ │99 allocate(size_type __n, const void* = static_cast<const void*>(0)) │
366
+
367
+ │100 { │
368
+
369
+ >│101 if (__n > this->max_size()) │
370
+
371
+ │102 std::__throw_bad_alloc(); │
372
+
373
+ │103 │
374
+
375
+ │104 #if __cpp_aligned_new │
376
+
377
+ │105 if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) │
378
+
379
+ │106 { │
380
+
381
+ │107 std::align_val_t __al = std::align_val_t(alignof(_Tp)); │
382
+
383
+ │108 return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), __al)); │
384
+
385
+ │109 } │
386
+
387
+ │110 #endif │
388
+
389
+ │111 return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); │
390
+
391
+ │112 }
392
+
393
+ ```
394
+
395
+ おそらく、線形listの用に、newを使って新たに領域を作り、そのポインタを連結させているんですかね・・・
396
+
397
+ つまり・・・newで作成した領域を随時増やす、reallocみたいな関数はnewでは実現不可能・・・ということですかね。