本文主要是介绍[项目][CMP][直接向堆申请页为单位的大块内存]详细讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 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
}
这篇关于[项目][CMP][直接向堆申请页为单位的大块内存]详细讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!