目录
- 1.系统调用
1.系统调用
- Windows和Linux下如何直接向堆申请页为单位的大块内存:
- VirtualAlloc
- brk和mmap
// 直接去堆上按页申请空间
static inline void *SystemAlloc(size_t kpage)
{
#ifdef _WIN32void *ptr = VirtualAlloc(0, kpage << 13, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#else// Linux下brk mmap等
#endifif (ptr == nullptr){throw std::bad_alloc();}return ptr;
}static inline void SystemFree(void *ptr)
{
#ifdef _WIN32VirtualFree(ptr, 0, MEM_RELEASE);
#else// Linux下sbrk unmmap等
#endif
}