Питание.NET без сборки "мусора"?

Выполненный ЗАВИСИТ от XYZ.dll непосредственно, в месте, на котором Вы развернули его. Если это ничего не показывает пропавшие без вести, используйте fuslogvw инструмент в SDK платформы для трассировки ошибок загрузчика. Кроме того, журналы событий иногда содержат информацию об отказах загрузить DLLs.

8
задан Phil 18 September 2009 в 05:38
поделиться

7 ответов

Вы смотрели Boost ?

В качестве альтернативы вы можете использовать "C ++ / CLI" (также известный как управляемый C ++, он же C ++. NET. ); код, написанный на этом языке, может вызывать .NET API, а также может вручную управлять памятью с помощью традиционных Win32 API, таких как HeapAlloc / HeapFree . Однако по моему опыту, этот язык чаще всего используется для написания «связующего кода», а не для создания приложений с нуля.

6
ответ дан 5 December 2019 в 12:10
поделиться

Вы также можете «закрепить» сегменты кода на C #, если вы действительно хотите иметь явные указатели доступа и тому подобное ( из MSDN ):

unsafe static void TestMethod()
{
  // assume class Point { public int x, y; }
  // pt is a managed variable, subject to garbage collection.
  Point pt = new Point();

  // Using fixed allows the address of pt members to be
  // taken, and "pins" pt so it isn't relocated.

  fixed (int* p = &pt.x)
  {
      *p = 1;
  }        
}

Но на самом деле, Я думаю, вам лучше самому определить, почему именно вы хотите управлять памятью - большинство разработчиков, которых я знаю на данном этапе, предпочли бы сосредоточиться на реальном проектировании и построении систем, а не беспокоиться об освобождении блоков памяти. Здесь есть и другие хорошие предложения, такие как Boost (хотя, честно говоря, если у вас есть уговоры объявить, что вы лучше, чем GC, вы, вероятно, уже знаете о Boost), Qt и мосты .NET (черт, вы можете разместить CLR в неуправляемом процессе, если хотите), но я подозреваю, что в тех немногих местах, где вам действительно может потребоваться самостоятельно управлять памятью, вы

3
ответ дан 5 December 2019 в 12:10
поделиться

Qt кажется обширной библиотекой классов для C ++.

1
ответ дан 5 December 2019 в 12:10
поделиться
  1. Вы можете использовать .NET dll в проекте C ++ через COM, или вы можете разместить CLR и взаимодействовать с объектами CLR, это было бы довольно громоздким кодированием, но да, это возможно. Установка Com Visible в true делает объект .NET доступным через COM в VB / MFC.

  2. .NET имеет несколько методов сборщика мусора, которые вы можете запускать явно для сбора мусора, плюс он имеет интерфейс IDisposable, который вы можете использовать для удаления своих членов в class и с ключевым словом using вы можете явно вызвать метод dispose в конце примера использования, показанного ниже.

 using (FileStream fs = File.OpenRead ("xyz.txt") {
 fs.Read (бафф, 0,100);
}
// здесь fs закрывается в dispose 
// метод автоматически ...
  1. Проект Visual C ++ CLI позволяет интегрировать обычные C ++ и .NET в один проект. Вы можете найти его в различных мастерах приложений Visual Studio.
1
ответ дан 5 December 2019 в 12:10
поделиться

Существуют ли библиотеки C ++, которые могут конкурировать с богатым набором библиотек в .NET framework?

QT сразу приходит на ум, но я сомневаюсь, что он так же богат, как .NET-библиотека.

есть ли способ вручную освободить память на одном из языков .NET что я никогда не использовал?

Ответ на этот вопрос - да и нет. В .NET есть определенные методы для управления памятью. Есть слабые ссылки , сильные ссылки, (своего рода) принудительная сборка мусора и т. Д. Но эти вещи уже подробно обсуждаются здесь.

Вот некоторые подробности о том, как работает Управление памятью в .NET.

Сборка мусора и поколения
Лучшие практики принудительного GC в .NET
Еще лучше, прочтите ссылки в этом поисковом запросе

можно ли использовать .NET dll в стандартное приложение C ++?

Да, вы можете создавать COM Wrapper / неуправляемые оболочки для .NET DLL и использовать их в приложениях C ++.

1
ответ дан 5 December 2019 в 12:10
поделиться

Вы можете вызывать неуправляемый код из управляемого кода (через PInvoke) и вызывать управляемый код из неуправляемого кода (как своего рода COM-объект).

0
ответ дан 5 December 2019 в 12:10
поделиться

STL + Boost + Qt составляет серьезную конкуренцию C # и .NET.

Мне недавно пришлось работать над приложением Compact Framework, и я был разочарован способом WinForms по сравнению с простыми макетами Qt. Шаблон удаления также очень раздражал, было неясно, какие ресурсы нуждались в удалении, а какие нет, поэтому я в конечном итоге поискал в Google, что безопасно применять, используя () on.

На мой взгляд, обработка неуправляемых ресурсов сложнее, чем RAII C ++.

1
ответ дан 5 December 2019 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: