Всем привет. Пишу свой аллокатор памяти. Возникла трудность. Как инициализировать статический массив в классе? Код ниже. Заранее спасибо. PHP: class CMemMgr { public: static void* allocate(UInt32 size); static void free(void *ptr); // allocation status static UInt32 mError; protected: static bool mIsReady; private: static void init(); static UInt32 findFreeAddress(UInt32 pagesNumber); static void convertFreeToAllocated(UInt32 freeAddress, UInt32 pagesNumber); static void convertAllocatedToFree(); // size of arrays that contains addresses of allocated or free blocks const static UInt32 ALIGN = 0x4; const static UInt32 mMemorySize = 0x10000; const static UInt32 mFreeBlocksSize = 0x4000; static const UInt32 BAD_ADDRESS = 0x10001; static const UInt32 BAD_OFFSET = 0x10001; // main memory that contatins all allocated blocks static char mMemory[mMemorySize]; // addresses of free blocks in main memory static int mFreeBlocks[mFreeBlocksSize]; // addresses and sizes of allocated blocks static CAllocInfo mAllocatedBlocks[mFreeBlocksSize]; }; Всем спасибо! Вопрос снят. Достаточн в cpp файле сделать следующее. PHP: char CMemMgr::mMemory[mMemorySize];
Спасибо, гляну. Еще такой вопрос. Вдруг отвалился у меня srand(time(0)); Вот еррор мессаг. Кто-то встречался с подобным? Как видите ошибка не у меня в сурсах... Error 1 error C2628: 'time_t' followed by 'int' is illegal (did you forget a ';'?) c:\program files\microsoft visual studio 10.0\vc\include\time.h 131 1 mylist
malloc. Или VirtualAlloc, HeapAlloc под вендой. Под пингвином - shmget, shmat. PHP: #include <stdio.h> #include <stdlib.h> int main() { const int size = 2; int **p = (int**) malloc(size * sizeof(int*)); for (int i = 0;i < 2;++i) { p[i] = (int*)malloc(size * sizeof(int)); } for (int i = 0;i < size;++i) { for (int j = 0;j < size;++j) { p[i][j] = i * j; } } for (int i = 0;i < size;++i) { for (int j = 0;j < size;++j) { printf("[%i] ", p[i][j]); } printf("\n"); } for (int i = 0;i < size;i++) { free(p[i]); } free(p); return EXIT_SUCCESS; }
Стек ограничен. Можно объявить глобальный массив, он как раз размещается в куче. Только надо написать менеджер памяти с учетом занятых и свободных узлов. added later Правда я все равно не понял. Зачем двумерный массив? Это же чистая абстракция.
Как работать с MySQL в CodeGear RAD Studio 2010 (C++ Builder 2010)? Есть какие классы? (ODBC прошу не предлагать). Не компилируются файлы, которые идут с оф. пакетом mysql.