C语言数组初始化的坑

如下代码,输出结果是什么?

#include <stdio.h>

int main()

{

int arr[10] = {10};

for(int i = 0;i < 10;i++)

printf("%d\n",arr[i]);

return 0;

}

输出结果:

10

0

0

0

0

0

0

0

0

0

本来以为应该全部输出的是10。

看到介绍:https://en.cppreference.com/w/c/language/array_initialization

文中有几个例子,引以为戒:

int x[] = {1,2,3}; //......

C++11多线程例子

// CPP program to demonstrate multithreading

// using three different callables.

#include <iostream>

#include <thread>

using namespace std;

// A dummy function

void foo(int Z)

{

for (int i = 0; i < Z; i++) {

cout << "Thread using function"

" pointer as callable\n";

}

}

// A ca......

std::sort segmentfault问题分析

工作中有个需要使用sort对从mongo中查询到得数据进行排序,学习了下sort的一些用法。

#include <algorithm>

#include <vector>

bool comp(int d1, int d2)

{

return d1 >= d2;

}

int main()

{

std::vector<int> d(50,10);

std::sort(d.begin(), d.end(), comp);

return 0;

}

上面的代码看似没什么问题,但运行崩溃:

[root workspace]#./sort

**......

C++指针两例

分析程序给出下面两段代码的输出结果,并给出具体原因(运行环境基于gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)):

代码一

#include <iostream>

using namespace std;

void foo(const void* ptr)

{

std::cout << "In foo(void*)" << std::endl;

}

void foo(bool b)

{

std::cout << "In foo(bool)" << std::endl;

}

......

rc4算法 C语言实现

定位问题居然查到项目中引入的rc4 c算法中的一个bug,也算是大开眼界。

学习rc4 c实现,结合维基百科中的例子,修改网上的例子rc4 c example

/* RC4 Encrypt/Decrypt

RC4 was developped by RSA labs, however this code may not be exact.

Written in portable Micro-C by Tom St Denis.

Notes:

1. I found the 'source' on a discussion website. The user

posting c......

段错误segment fault分析

最近工作中改了不少core,对segment fault有了一些肤浅的认识,本篇文章会试图总结常见的原因,使用非常浅显的汇编知识加以印证,有多浅显呢? 今天早上刚刚学完这篇文章汇编语言入门教程。文章标题虽然从分析segment fault写起,但仍然会延续想到哪写到哪的风格,如果对文章有任何疑问,欢迎留言讨论。

段错误产生的种类

总结几种原因,这里划分可能不科学,这里的划分可能有重叠,比如1 2是8栈溢出的一种形式。

1.数组(vector)越界

2.使用strcpy strcat 等不安全的字符串操作函数

3.多线程访问全局变量未加锁

4.多线程使用线程不安全函数

5.信号处......

c++filt用法介绍

解析变量类型

typedef char * pstring;

const pstring cstr = 0; //cstr是指向char的常量指针

const pstring *ps; //ps是一个指针,它的对象是指向char的常量指针

上面两条声明语句的基本数据类型都是const pstring,const是对给定类型的修饰。pstring实际上指向char的指针,因此const pstring就是指向char的常量指针,而非指向常量字符的指针。

遇到类型别名时,人们往往会错误地尝试把类型别名展开,以理解该语句的含义,这是错误的!

例如:

typedef char *......

C++语言导学

放假前去朋友那闲逛,发现他一前端居然看起了一本名为 C++语言导学 的书,这不是不务正业吗?

为了让他在前端方面能有更深的造诣,我只能把这本书拿来勉为其难的读下。

说来惭愧工作中使用的C++只是最简单的那部分,公司编程规范中明确规定不能使用c++ 11 14 17 模板等新特性。本文记录学习该书过程中的疑问,如有错误欢迎指正。

确定默认c++编译标准

如何确定当前g++使用的哪个版本的C++标准编译呢?

这里介绍一种查看方法,如果当前g++版本是4.7之后,可以使用如下方法查看:

[root workspace]#g++ --version | head -1

g++......

C语言函数getrlimit与setrlimit介绍

老规矩,祭出man手册。学习man手册中的内容:man 2 getrlimit

The getrlimit() and setrlimit() system calls can be used to get and set the resource limits such as files, CPU, memory etc. associated with a process.

Each resource has an associated soft and hard limit.

soft limit: The soft limit is the actual limit enfo......

协程-C语言实现

最近在学习lua的过程中发现lua居然有个东西叫协程(协同coroutine),虽然以前就听过这个概念,但没有结合实践的一些理解。

开始今天的文章前,首先需要学习下面几篇文章。

漫画-什么是协程?

lua协同程序

difference between a coroutine and a thread

linux下有ucontext族函数,可以用于实现协程。

我所理解的ucontext族函数

ucontext族函数详解

Segment Fault例子:

#include <stdio.h>

void ping();

void pong();

vo......