- 博客(10)
- 收藏
- 关注
原创 linux进程操作
僵尸进程(Zombie Process)是指已经结束执行但其进程描述符仍然存在的进程。这种情况发生在子进程已经完成执行并退出,但其父进程尚未通过wait()或waitpid()系统调用来读取子进程的退出状态。在这种情况下,子进程的进程ID和退出状态仍然保存在系统中,以便父进程可以查询。僵尸进程不占用除了进程表项之外的任何资源,不会消耗CPU时间,也不会占用内存空间。然而,因为每个进程都需要一个唯一的进程ID,如果系统中存在大量的僵尸进程,它们可能会耗尽可用的进程ID,从而阻止新的进程被创建。
2024-05-19 19:09:03 1139
原创 std::string
拼接是指将多个 string_literals 连接成一个更长的 string_literal 的过程,不同的编程语言可能有不同的语法和规则。注意,这里的 "String"s 是一个 std::string 类型的 string_literal,因为它使用了 s 后缀。s 后缀是一个用户自定义的字面量 (user-defined literal),它可以将一个 const char* 类型的 string_literal 转换为一个 std::string 类型的 string_literal。
2024-05-16 21:14:10 1126
原创 snprintf函数
其中,str 是指向用于存储结果字符串的缓冲区的指针,size 是缓冲区的最大大小(以字节为单位),format 是格式字符串,与 printf 函数中的格式字符串相同,后面的 …表示可变数量的额外参数,这些参数与格式字符串中的格式占位符相对应。如果 buffer 太小,无法容纳全部格式化后的数据,则返回的值将会是如果 buffer 足够大,本应写入的字符总数。如果缓冲区不够大,实际写入的字符数会少于这个返回值,但函数仍然会返回完整的字符总数,以便程序员可以了解需要多大的缓冲区来容纳全部数据。
2024-05-12 20:52:08 268
原创 push_back(std::move(string))与emplace_back(string)
如果你想要添加一个已经存在的对象,并且想要避免复制,那么使用push_back(std::move(string))是合适的。如果你想要直接在vector中构造一个新元素,那么使用emplace_back并传递构造新元素所需的参数是更好的选择。
2024-05-11 18:39:24 784
原创 函数指针与匿名函数
函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。其中,是函数返回类型,是指针变量的名称,是函数参数的类型。// 声明一个指向函数的指针// 将函数指针指向特定的函数// 通过函数指针调用函数return 0;这个例子中,funcPtr是一个指向接受一个整数参数并返回void的函数的指针。然后,它被赋值为指向myFunction函数的指针,并通过该指针调用函数。
2024-05-07 12:48:46 695 1
原创 C++完美转发
完美转发是指在模板函数中将接收到的参数无损地转发到另一个函数的能力。这是通过来实现的,它是一个特殊的模板函数,用于保持原始参数的值类别(左值或右值)。当你在模板函数中使用时,它会根据每个参数的原始值类别来转发这些参数。如果原始参数是左值,那么转发后它仍然是左值;如果原始参数是右值,那么转发后它也是右值。这种机制非常重要,因为它允许你编写通用代码,同时保持参数的优化(比如避免不必要的拷贝)。完美转发是现代C++中实现高效和灵活代码的关键技术之一。接下来一个一个解释。
2024-05-02 12:30:34 819
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人