Это не проблема «старого синтаксиса» против «нового синтаксиса» - C ++ / CLI будет иметь такое же поведение. System::Single
- это псевдоним для float
, который может быть размещен в стеке, неуправляемой куче или управляемой куче.
Здесь, поскольку вы используете неокрашенный new
, вы выделяете его в неуправляемой куче, т. Е. Делаете точно так же, как:
float* sngTemp = new float(0.0);
Почему нельзя ожидать, что это протечет? Если вы хотите сборку мусора, используйте управляемое размещение
(__gc new
в старом синтаксисе); или, что еще лучше, вообще не выделяйте типы значений в куче, что делает его беспроблемным.