и чему вы удивляетесь, если отключили стандартные либы... это буффер секьюрити чек наверное... не должно иметь значения...
самые банальные примеры: Код (Text): class Test { public: Test(int a); ~Test(); private: int m_a; }; Test::Test(int a) { m_a = a; } Test glTest(3); int main() { // Глобальный объект glTest не инициализирован // так, как _initterm не вызывался } Код (Text): int main() { Test* locTest = new Test(3); // Ошибка линковки - раз, так как не определен оператор new (если отключили CRT) // Ошибка исполнения - не инициализирована CRT-куча (если CRT включена, но не было инициализаций) delete locTest; // Тоже самое }
глобалки поинтерами держать. new/delete ofc нужно самому переопределить. да хотя бы банальное: Код (Text): extern "C" __declspec(restrict) __declspec(noalias) void* malloc(size_t size) { return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); } extern "C" void __declspec(noalias) free(void* p) { if (p) HeapFree(GetProcessHeap(), 0, p); } extern "C" __declspec(restrict) __declspec(noalias) void* realloc(void* p, size_t newSz) { if (p) if (newSz) return HeapReAlloc(GetProcessHeap(), 0, p, newSz); else free(p); return p; } void* operator new(size_t size) { return malloc(size); } void operator delete(void* p) { if (p) free(p); } void* operator new[](size_t size) { return (operator new(size)); } void operator delete[](void* p) { operator delete(p); }
а если "правильно" делать приложение на чистом(если это можно так назваать) ооп в С++, всеравно нужно все из функции мейн делать?
float Сообщение выглядит так, как будто забыли поставить точку входа. Может поставили только для дебага? Или приаттачте проект. Или вы с crt линкуете? С crt так не выйдет.