C++
文章平均质量分 50
Segment fault
千万不要关注我,否则拉黑
展开
-
C++打印内存数据
参照gdb的风格, 逐字节打印,同时打印10进制无符号和16进制,一行打印8字节其中int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)int scnprintf(char *buf, size_t size, const char *fmt, ...)两个函数是从Linux内核源码复制的直接上完整代码:#include <cstdio>#include <cstdarg&原创 2021-01-17 00:26:08 · 2050 阅读 · 0 评论 -
Linux和Windows都可用的串口调试助手
前段时间在玩单片机,用的是Windows和Linux两个系统开发,当时在网上找了很久都没找到一个好用的串口调试工具,特别是Linux系统下完全没有这类工具,于是花了两个晚上的业余时间自己写了一个。功能如下:1、使用Qt开发,使用了C++112、支持数据收发和文件发送,不支持文件接收,觉得没必要3、支持定时发送,定时器精度是秒,范围1-30秒4、可以自由设置显示字体和前景背景颜色...原创 2019-11-29 00:00:39 · 904 阅读 · 0 评论 -
arm下堆和栈的增长方向
通过gdb调试下面的程序,观察运行于ARM的Linux系统中,heap和stack的区别#include <cstdio>#include <cstring>struct MyStr{ unsigned char ch[128]; MyStr() { memset(ch,0x01,128); }};int main(){ MyStr *p...原创 2018-10-14 21:53:04 · 2942 阅读 · 0 评论 -
Qt5.9.7 for ARM的编译安装(32位和64位)
Qt5.9.7 for ARM的编译安装 下载源码前往http://download.qt.io/official_releases/qt/5.9/5.9.7/single/下载最新版的源码(我这里下载的是当时最新的5.9.7)qt-everywhere-opensource-src-5.9.7.tar.xz,然后解压到某个文件夹为你的Linux安装常用的开发环境,比如gcc,mak...原创 2018-11-10 13:48:35 · 11595 阅读 · 3 评论 -
linux下使用strlcpy和strlcat
strlcpy和strlcat是BSD的C库函数,glibc维护者一直拒绝将其加入,所以需要安装额外的包。函数原型:size_t strlcpy(char *dst, const char *src, size_t size);size_t strlcat(char *dst, const char *src, size_t size);描述:The strlcpy() fun...原创 2018-12-20 20:51:21 · 5664 阅读 · 0 评论 -
整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...原创 2018-12-27 21:53:00 · 257 阅读 · 0 评论 -
const在C与C++中的区别
下面的代码在C和C++下编译,输出会是什么?1 void main(void)2 {3 const int a = 0x00;4 int *pi;56 pi = (int *)&a;7 *pi = 0xFF;89 printf("*pi=%d,a=%d\n", *pi, a);10 return 0;11 }注意,上面的代码第6行必须写为p...原创 2018-12-27 22:36:54 · 235 阅读 · 0 评论 -
-1L和0U比较大小,32为系统和64位系统有何不同?
下文所有说法仅针对linux等long类型在32位和64位程序中,长度不一样的系统成立,因为WIndows系统long不论是32位还是64位,都是4字节。下面的程序在32位和64位下,会输出什么结果? 1 #include <stdio.h> 2 3 int main() 4 { 5 long la = -1l; 6 unsigned ...原创 2018-12-27 23:21:54 · 1851 阅读 · 0 评论 -
sizeof(char [])和sizeof(char *)等于多少?
下面的代码执行结果是多少? 1 #include <stdio.h> 2 3 int main(void) 4 { 5 char ca[] = {"123456"}; 6 char *pca = "123456"; 7 8 printf("sizeof(ca)=%d,sizeof(pca)=%d,sizeof(*pca)=...原创 2018-12-28 00:31:29 · 28101 阅读 · 1 评论 -
链表反转、链表是否有环
1、链表反转template<class ElementType> void inline slist<ElementType>::invert(){ if (head->next != nullptr) { node *p, *q, *r; p = head->next; q = p->next; p->next = n...原创 2018-12-18 23:34:41 · 460 阅读 · 0 评论 -
scnprintf()和snprintf()、vscnprintf()和vsnprintf()
写过Linux驱动或者内核态程序的人应该都知道,编译时会有这样一个警告:use scnprintf() instead of snprintf()为什么在编译驱动或者内核态程序的时候会有这个警告呢?据说因为snprintf()有很大内存越界的风险?在内核态,内存越界往往是灾难性的后果下面是从Linux内核源码中复制的一段snprintf()和scnprintf()的实现(内核版本:...原创 2018-12-24 22:59:20 · 8323 阅读 · 0 评论 -
减法溢出翻转导致的死循环
下面的代码有没有问题?#include <cstdio>int main(){ unsigned int a = 10; int b = 10; /* loop 1 */ while(a>0) { a -= 3; printf("a=%u\n", a); } /* loop 2 */ while(b>0) { b -=3; pr...原创 2019-03-26 00:43:17 · 1013 阅读 · 0 评论 -
kqueue示例
kqueu的两个例子:1、完全以IO复用的方式读入标准输入流数据,输出到标准输出流中#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/event.h>#include <errno.h&g...原创 2018-10-12 20:59:32 · 956 阅读 · 0 评论 -
kqueue的用法
The NetBSD Project”Of course it runs NetBSD” 本文翻译自:http://wiki.netbsd.org/tutorials/kqueue_tutorial/ NetBSD Wiki/tutorials/kqueue tutorial目录I、简介II、kqueue APIkevent 数据结构pair flags ...原创 2018-10-12 20:53:04 · 4548 阅读 · 0 评论 -
Windows下SQLite3中文乱码问题
在Windows下CodePage使用的是ANSI,简体中文对应的编码就是936,即GB2312。而Web,Linux,MySQL和SQLite等数据库都是使用UTF-8编码,所以。。。当然需要进行GB2312和UTF-8之间的转换。执行SQL语句前需要将GB2312转UTF-8:1、将ANSI转为Unicode2、将Unicode转为UTF-8在回调函数中需要将UTF-8转GB2312:1、UT...原创 2018-05-13 22:48:40 · 4095 阅读 · 0 评论 -
查找第二大的元素
给定一个数组,找出第二大的元素 #include <iostream>#include <set>using namespace std;int find_sec_max(int a[],int n);int main(){ int aa[]={9,4,6,7,56,76,57,65,47,95,41,85,462,365,984,58,48,465...原创 2018-07-18 14:42:38 · 671 阅读 · 0 评论 -
1-10的阶乘之和1!+2!+3!+...+10!
计算1!+2!+3!+...+10!原创 2018-07-15 09:24:05 · 2733 阅读 · 0 评论 -
笔试题-汽水瓶
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝? 输入描述...原创 2018-07-15 09:27:11 · 263 阅读 · 0 评论 -
笔试题-明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。 Input Pa...原创 2018-07-15 09:30:46 · 253 阅读 · 0 评论 -
笔试题-进制转换
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 输入例子1:0xA 输出例子1:10 #include<iostream>#include<string>#inc...原创 2018-07-15 09:33:28 · 348 阅读 · 0 评论 -
笔试题-字符集合
输入一个字符串,求出该字符串包含的字符集合 输入描述:每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 输出描述:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。 输入例子1:abcqweracb 输出例子1:abcqwer #include<iostre...原创 2018-07-15 11:24:10 · 214 阅读 · 0 评论 -
设计模式之单例模式
例模式可以保证系统中只有一个类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式的要点有三个:1. 单例类只能有一个实例2. 它必须自行创建这个实例3. 它必须自行向整个系统提供提供这个实例。单线程的工厂模式:饿汉模式singleton.h#ifndef _SINGLETON_H_#define _SINGLETON_H_#inc...原创 2018-07-20 21:54:09 · 217 阅读 · 0 评论 -
牛客网-调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: void reOrderArray(vector<int> &array) { int position = 0; ...原创 2018-09-01 23:26:53 · 183 阅读 · 0 评论 -
Windows编译boost
下载boost压缩包解压,找到bootstrap.bat文件1、运行bootstrap.bat2、编译&安装在步骤1之后,会生成一个b2.exe文件如果选择VS编译下面的“toolset=msvc”,要求编译器支持c++11,所以尽量使用VS2013及以上版本,推荐VS2015(VC14.0)如果选择mingw64编译下面的“toolset=gcc”其中-j4表示使用...原创 2018-09-16 00:14:43 · 679 阅读 · 0 评论 -
C++虚函数表在虚继承和继承中的差别
下面的代码在gcc和VC中的结果#include <cstdio>class A{public: virtual void funcaa() { printf("class A %s\n",__func__); }};class AA:virtual public A{public: virtual void funcaa() { printf...原创 2018-09-30 21:32:41 · 227 阅读 · 0 评论 -
epoll的用法
示例如下:#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/epoll.h>#incl原创 2018-10-01 22:58:31 · 234 阅读 · 0 评论 -
父进程退出之后,子进程会发生什么?
在linux中,所有进程都有一个共同的父进程systemd,如果父进程退出了,子进程还没运行结束,子进程会被systemd(老版本的linux是initd)收养下面用一个小程序来验证一下:#include <cstdio>#include <sys/types.h>#include <unistd.h>#include <errno.h&g...原创 2018-10-03 15:27:37 · 10913 阅读 · 0 评论 -
Windows系统,VS和GCC下各种数据类型大小的比较
两个编译器一个是VS2015,一个是MinGW64(GCC6.3) #include <iostream>using namespace std;int main(){ cout<<"Size of char="<<sizeof(char)<<endl; cout<<"Size of pointer="&am原创 2017-03-15 12:54:44 · 3207 阅读 · 0 评论