К примеру такой код: struct tparammodule{ DWORD ep; DWORD base; }; tparammodule *param=new tparammodule(); в результате выделяется память под param, и переменная очищается memset наверное должен быть какой то параметр у студии?
И вот ещё проблема: unsigned __int64 delta; FILETIME datetime2, datetime1; delta=(unsigned __int64)(*(unsigned __int64*)&datetime2-*(unsigned __int64*)&datetime1); компилятор генерит aulldiv от неё тоже нужно избавится
1. По стандарту так положено, на сколько я знаю. new вызывает конструктор по-умолчанию, который инициализирует переменные-члены в их значения по-умолчанию. 2. Если нужно вычислить разность в байтах, нужно использовать не (unsigned __int64*), а (char *). Если нужна разница именно в количестве байтов, поделённая на размер unsigned __int64 (т.е. 8 байт), такая операция приведёт не к ожидаемому результату, если разница между ними не кратна 8 байтам. В любом случае использование C-style cast'ов не приветствуется в C++.
В первом случае можно заменить new на malloc, во втором - сначала определитесь, какой результат вы ожидаете.
Aids Все правильно и в соответствии со стандартом. Делай new tparammodule; вместо new tparammodule();, и не будет memset.
Booster В ходе дискуссии рождается истина. Я первым сделал предложение, Вы подправили. ТС и я получили профит. Разве не замечательно? Глядишь не ответь я, другой бы никто не ответил в силу своей лени, а так видно, что человек ошибся, и хочется его подправить.
Person в том то и дело что я пытаюсь избавится от импорта. а мне конмпилятор апи втыкает и просит вставить ntdll.lib сори сильно упростил вырожение, должно так быть delta=(unsigned __int64)(*(unsigned __int64*)&datetime2-*(unsigned __int64*)&datetime1)/10000 но вы меня навели на мысль, я почему то подумал что __alldiv это какое-то преобразование типов, на самом деле это обычное деление с большими числами и всё можно свести к __int64 a,b; b=a/10000; поэтому для таких делений нужно самстоятельно вызвать alldiv
Вы удивительно мягко об этом говорите Тут не то, что не приветствуется, за это дело выговор обеспечен... 10000 - It's Magic Number. You should declare it as static constant in your class.
Ezrah Nafanya а как можно по другому найти разность 2х dwordов не прибегнув к преобразованию в __int64?