Administrator
发布于 2023-10-23 / 18 阅读 / 0 评论 / 0 点赞

10月23日

c++ DISALLOW_COPY_AND_ASSIGN

c++ DISALLOW_COPY_AND_ASSIGN - youxin - 博客园 (cnblogs.com)

在使用CMake和VS Code时,要使源文件跳转正常工作,需要进行一些配置。下面是一些可能的解决方案:

1. 安装CMake Tools扩展:在VS Code中安装"CMake Tools"扩展,该扩展提供了与CMake集成的功能,并可帮助自动配置构建和调试环境。

2. 配置CMake Tools:打开VS Code的设置(File -> Preferences -> Settings)并搜索"CMake Tools",然后根据需要进行相关配置。确保设置中的"CMake: Source Directory"和"CMake: Build Directory"与你的项目目录和构建目录相对应。

3. 生成编译数据库:在CMake配置中将`set(CMAKE_EXPORT_COMPILE_COMMANDS ON)`添加到你的CMakeLists.txt文件中。然后重新生成你的项目,这将生成一个名为"compile_commands.json"的文件,其中包含编译器所使用的编译命令。

4. 配置C/C++扩展:安装"C/C++"扩展,并在VS Code的设置中搜索"C/C++"以获取相关配置。确保设置中的"Cpp: Configuration Provider"选择了"CMake",这将通知C/C++扩展使用CMake构建系统。

5. 刷新C++ Intellisense:在VS Code的命令面板中(Ctrl+Shift+P),搜索"C/C++: Reset IntelliSense Database"并运行该命令,然后重新启动VS Code。

这些步骤应该能够帮助你在VS Code中实现源文件的跳转。请注意,具体的配置可能因你的项目结构和使用的扩展版本而有所不同。如果问题仍然存在,请确保你的

Vscode+clangd+lldb+cmake

几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南 - 知乎 (zhihu.com)

VS Code 安装 VSIX 插件_.vsix-CSDN博客

Releases · vadimcn/codelldb (githubfast.com)

关于debug

这个dmo1就是你的项目名,这里我的项目名和文件夹名不同,所以直接写名字

一般情况下

${workspaceFolderBasename}
永久增加交换空间

要在Ubuntu 22.04 上永久增加交换空间,可以按照以下步骤进行操作:

1. 创建交换文件:首先,使用以下命令创建一个交换文件。请将 <swapfile_path> 替换为你想要创建的交换文件的路径,以及 <swapfile_size> 替换为你想要的交换文件的大小(单位为MB)。

````bash

sudo fallocate -l <swapfile_size>MB <swapfile_path>

```

例如,创建一个大小为4GB的交换文件可以使用以下命令:

````bash

sudo fallocate -l 4GB /swapfile

```

2. 设置文件权限:运行以下命令,将文件的权限设置为只有 root 用户可以读写:

````bash

sudo chmod 600 <swapfile_path>

```

例如:

````bash

sudo chmod 600 /swapfile

```

3. 启用交换文件:使用以下命令将交换文件标记为交换空间:

````bash

sudo mkswap <swapfile_path>

```

例如:

````bash

sudo mkswap /swapfile

```

4. 激活交换空间:运行以下命令来启用交换空间:

````bash

sudo swapon <swapfile_path>

```

例如:

````bash

sudo swapon /swapfile

```

5. 设置永久交换空间:打开 /etc/fstab 文件以编辑:

````bash

sudo nano /etc/fstab

```

在文件的末尾添加以下一行来将交换文件自动加载为永久交换空间:

````

<swapfile_path> none swap sw 0 0

```

例如:

````

/swapfile none swap sw 0 0

```

6. 保存并关闭文件:按下 Ctrl + X,然后按 Y 保存更改。

7. 完成:现在你已经在 Ubuntu 22.04 上成功增加了永久交换空间。可以使用 swapon --show 命令来验证交换空间是否正确启用。

请注意,增加交换空间可能会对系统性能产生一定影响,因为交换空间是在磁盘上进行读写操作的。因此,在决定增加交换空间时,请考虑你的系统硬件配置和内存需求。

默认构造函数、默认拷贝函数、默认赋值函数、析构函数

C++随笔:关键字 =default 和 =delete - 知乎 (zhihu.com)

delete 某指针后,为什么要设置该指针nullptr?

void Server::deleteConnection(Socket *sock){
    auto it=connections.find(sock->getFd());
    if (it!=connections.end()) {
        Connection *conn=connections[sock->getFd()];
        connections.erase(sock->getFd());
        delete conn;
    }
}

在这段代码中,`conn` 是通过 new 关键字动态分配的 Connection 对象的指针。在删除 conn 对象后,将 conn 设置为 nullptr 是为了避免出现悬挂指针(dangling pointer)的情况。

conn 被删除后,指向该对象的指针就成为无效指针,即悬挂指针。如果后续代码继续使用这个指针,就会导致未定义的行为。为了避免这种情况,将指针设置为 nullptr 是一种良好的实践,可以帮助我们在后续代码中检测和处理悬挂指针的情况。

通过将 conn 设置为 nullptr,可以在后续代码中检查指针是否为 nullptr,以避免访问已被删除的对象。这样可以提高代码的健壮性和可维护性。

虽然在这段特定的代码中,将 conn 设置为 nullptr 可以省略,因为 conn 是一个局部变量,其作用域在函数结束后就会结束,不会再被使用。但是为了养成良好的编程习惯,以及防止以后对代码的修改可能导致问题,将指针设置为 nullptr 是一个好的实践。这样可以确保在后续的代码中,显式地知道该指针已经无效,避免不必要的错误和问题。


评论