strdup函数使用误区

在项目中看到有同事使用strdup函数后没有释放内存,在google搜索后发现许多网站中给的代码例子中使用完之后并未释放内存,存在一定程度上的误导。

geeksforgeeks

// C program to demonstrate strdup()

#include<stdio.h>

#include<string.h>

int main()

{

char source[] = "GeeksForGeeks";

// A copy of source is created dynamically

// and pointer......

MongoDB C Driver使用完全教程

学习使用MongoDB C Driver需要首先在本机安装mongodb,安装过程参考如下链接:

How to Install and Configure MongoDB on CentOS 7

启动mongodb存在告警信息,解决方法可以参考stackoverflow

升级cmake

由于centos7自带的cmake版本过低,因此需要升级cmake

root@localhost ~]# yum -y install gcc gcc-c++ kernel-devel ##先安装编译软件

[root@localhost ~]# wget https://cmake.or......

析构函数前加virtual作用

最近在利用地铁通勤时间学习c++相关知识,在csdn看到一篇关于为什么析构函数前加virtual的文章,csdn原文:析构函数前加Virtual作用

大家知道,析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢?请看下面的代码:

#include<iostream>

using namespace std;

class Base

{

public:

Base() {}; //Base的构造函数

~Base() //Base的析构函数

{

cout << "Output from the de......

复合&继承关系下的构造和析构

继承关系下构造析构顺序#include<iostream>

using namespace std;

class Base

{

public:

Base(){

cout << "Base ctor ..." << endl;

}

virtual ~Base(){

cout << "Base dtor ..." << endl;

}

};

class Derived:public Base

{

public:

Derived(){

cout << "Derived cto......

侯捷C++全方位提升技能素养笔记

最近晚上开始看c++相关资料,网上找到一个侯捷2016年的视频,抽看看了下获益良多.现整理记录相关知识点。

侯捷C++全方位提升技能素养

iostream与iostream.h的区别

When including a header file in C++, what's the difference between...

1) including the .......

shell导入环境变量

看到一篇非常有意思的文章export variables,讲述了shell环境变量的用法,其中有一个比较新奇的点,例如我在命令行中直接输入bash可以创建一个新的实例(start a new shell instance).如果普通的变量定义在子进程中输出为空,如果想要将变量传递给子进程就需要export变量。

在stackoverflow看到一篇答案bash

The short answer is that when you type "bash" at a bash prompt, it starts a new bash process.

Bash is a program t......

面向对象编程c实现

微信公众号看到一篇文章,使用C实现封装、继承、多态,恰好最近开发中在使用C++,因此将代码做简单修改提交到自己github中c4oop.

[LeetCode C++实现]86.Partition List

86.Partition List

解法与思路:

将小于某一值x的结点加到pless所指向的结点,将大于某一直x的结点加到pbigger所指向的结点。需要注意内存泄露与将pbigger最后一个结点next置为NULL。

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

* ListNode(int x) : val(x), next(NULL) {}

* };

*/

class Solution {

public:

ListNode......

[LeetCode C++实现]189.Rotate Array

189.Rotate Array

解法一,空间复杂度O(n)

class Solution {

public:

void rotate(vector<int>& nums, int k) {

int length = nums.size();

if(k <= 0 || length <= 1)

return;

//copy vector nums

vector<int> copy_nums;

vector<int>::iterator it = copy_nums.begin();

copy_nums.insert(it,n......

[LeetCode C++实现]13. Roman to Integer

13. Roman to Integer

罗马数字转整数,写了一堆if else之后打算改成switch,等等,我刷leetcode不是想学c++吗,那用c++应该会简单不少。

解法如下:

class Solution {

public:

int romanToInt(string s)

{

map<char, int> T = { { 'I' , 1 },

{ 'V' , 5 },

{ 'X' , 10 },

{ 'L' , 50 },

{ 'C' , 100 },

{ 'D' , 500 },

{ 'M' , 1000 } };

int sum = T[s.bac......