小编Qin*_*hen的帖子

Linux 内核中的按需补零是如何实现的,以及在哪里可以禁用它?

当我们malloc内存时,只有虚拟内存可用,而且它实际上指向零页。当我们尝试写入malloced内存时,将分配真正的物理内存,此时,将出现copy-on-wright,将零从零页复制到通过页错误映射的物理内存。我的问题是,在linux源代码中如何/在何处实现按需补零,我想禁用此功能来进行一些测试。我猜这可能发生在页面错误过程中,而不是 brk() 或 mmap() 中。

与按需零填充相关的类似主题。ZFODCOW

c memory-management copy-on-write linux-kernel page-fault

6
推荐指数
1
解决办法
3476
查看次数

如何在CMake中分离头文件和源文件?

我的项目结构如下:

--root: main.cpp CMakeLists.txt 

    --src: function.cpp CMakeLists.txt 

    --include: function.h
Run Code Online (Sandbox Code Playgroud)

main.cpp:

#include <iostream>
#include "function.h"
using namespace std;

int main(int argc, char *argv[])
{
    //call module in function.hpp
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根目录中的CMakeLists.txt:

 project(t1)
 cmake_minimum_required(VERSION 2.8)
 add_subdirectory(src)               
 file(GLOB_RECURSE SOURCES
     include/function.h
     src/function.cpp)            
 add_executable(${PROJECT_NAME} ${SOURCES})
Run Code Online (Sandbox Code Playgroud)

src目录中的CmakeLists.txt:

include_directories(${PROJECT_SOURCE_DIR}/include)
Run Code Online (Sandbox Code Playgroud)

如何在根目录和src目录中编写CMakelists以实现功能的单独实现?更进一步,如何在主叫它们。CMake中的可能解决方案在include_directories中找不到正确的头文件/ include文件。但这仍然与我的情况不符。

c++ cmake

5
推荐指数
1
解决办法
4633
查看次数