template<class T> T* InternalNewArray(size_t cElements) { size_t cbSize = (cElements * sizeof(T)) + sizeof(size_t); T *pMem; pMem = (T*)InternalMalloc(cbSize); if (pMem == NULL) return NULL; *(size_t*)pMem = cElements; pMem = (T*)((size_t*)pMem + 1); return new (pMem) T[cElements](); }
template<class T> T* InternalNewArray(CorUnix::CPalThread *pthrCurrent, size_t cElements) { size_t cbSize = (cElements * sizeof(T)) + sizeof(size_t); T *pMem; if (pthrCurrent) pMem = (T*)InternalMalloc(pthrCurrent, cbSize); else pMem = (T*)malloc(cbSize); if (pMem == NULL) return NULL; *(size_t*)pMem = cElements; pMem = (T*)((size_t*)pMem + 1); return new (pMem) T[cElements](); }