Задача обчислення обсягу анонімної пам’яті зазвичай стоїть перед розробниками, які хочуть здійснити ефективне використання ресурсів під час розробки програмного забезпечення. Особливо це актуально в сферах, де кожен кілобайт пам’яті має вагоме значення, наприклад, у вбудованих…
Офіційна документація Microsoft чітко стверджує, що тип bool не є blittable. Документація також зазначає:
1 |
"Ви можете перевірити, чи є тип <em>blittable</em> або містить <em>blittable</em> вміст, спробувавши створити закріплену GCHandle. Якщо тип не є рядком або вважається не <em>blittable</em>, <code>GCHandle.Alloc</code> викине виняток <code>ArgumentException</code>." |
Тоді чому наступний код не викидає виняток для мене?
1 2 3 4 |
using System.Runtime.InteropServices; GCHandle.Alloc(new bool(), GCHandleType.Pinned).Free(); |
Причина цього поведінки полягає в оптимізації розміщення пам’яті, яку здійснює…