![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 59
C/C++
多凡
一起为技术奋斗吧
展开
-
C语言windows linux平台下 检查内存泄漏
一开始用的是memwatch ,结果现在忘了vs 如何配置编译选项了,学会了使用新的 memleak去检测 。memleak下载网址里面会携带exmaple看看基本就明白了。#include <stdio.h>#include <stdlib.h>#include "memleak.h"int main(){ void* a,*b; dbg_init(10); dbg_catch_sigsegv(); a =(void*)malloc(100); b=(.原创 2021-03-23 17:02:01 · 191 阅读 · 1 评论 -
C语言 数组传参导致退化一个[]成为指针
在一次稀疏矩阵压缩算法中,为了保证压缩函数可复用性,使用了void** 作为压缩形参,结果二维数组传入一直无法获取到内容。结果出现的方案如下方法1方法2:数组指针 或者是 二级指针 结果相同 int ** arr;上述两种情况指针步长都会是一个int* 的大小,也就是4个字节 ,这个可以从第二章图,13630500-13630496可以看出来。...原创 2021-03-22 19:54:46 · 242 阅读 · 0 评论 -
Linux C++ 使用valgrind 检查内存泄漏
我的环境是ubuntu使用发行版的自带的源中安装sudo apt install valgrind然后运行一下 valgrind + 可执行命令 就可以 检查内存泄漏啦 内存泄漏检测 主要看definitely lost:这里如果是0,说明没有会导致程序崩溃读的内存泄漏问题。“definitely lost”:确认丢失。程序中存在内存泄露,应尽快修复。当程序结束时如果一块动态分配的内存没有被释放且通过程序内的指针变量均无法访问这块内存则会报这个错误。“indirectly lost”:间接丢.原创 2020-06-10 11:10:52 · 581 阅读 · 0 评论 -
vscode makefile报错分隔符
原因,vscode 默认tab键是4个空格,所以导致make的时候没法识别。解决方法:setting选项里搜索renderControlCharacters,勾选选项即可然后renderWhitespace,选成all即可。这样就可以了。原创 2020-05-27 10:58:22 · 642 阅读 · 0 评论 -
linux c类型 进制 转换库函数
基本满足开发需求了#include <stdint.h>int main_INT(){ // 类型转换 // 字符串 转 浮点数 double a = 0.0; char douChs[] = "125.45"; a=atof(douChs); cout<<a<<endl; int b = 0; // 字符串 转 ...原创 2019-12-31 16:16:41 · 492 阅读 · 4 评论 -
信号量 Linux函数 semget();semctl();semop();
linux c的信号量操作// semphoreint main(){ int sem_mutex = 0; /** * 创建信号量, * IPC_CREAT 如果存在就获取,否则就创建新的, * 权限是0666, * 参数1 是key值, * 参数2 代表信号量的个数 */ sem_mutex = semget(123, 1, IPC...原创 2019-12-31 15:08:41 · 611 阅读 · 0 评论 -
linux c++ json字符串解析
这个是测试jsoncpp 解析字符串的小程序,杂乱无序,不爱勿喷#include "./include/config.h"int main_(){ char buf[4096] = {0}; // FILE* file = fopen("JsonText", "r"); ifstream in("config.json", ios::binary); if (!in...原创 2019-12-31 14:13:51 · 664 阅读 · 0 评论 -
c++ json 字符串 简单校验
这个校验 只是 判断字符串的括号是否成对,如有更多需求可以再添bool IsJsonData(std::string strData){ if (strData[0] != '{') return false; int num = 1; for (int i = 1; i < strData.length(); ++i) { if (strData...原创 2019-12-31 14:10:50 · 1066 阅读 · 0 评论 -
linux 进程管理相关函数
对于linux 函数可以通过命令行指令:man 函数名,查看函数相关信息//返回当前进程的pidgetpid(); //创建一个进程,//当执行完这行代码后,//将会有两个进制执行下面的代码,//不同的是,父进程pid大于0,子进程pid=0//同时运行fork();//和fork()类似//但是这里子进程先运行,//结束后,运行父进程vfork()//exec将...原创 2019-12-30 15:15:26 · 324 阅读 · 0 评论 -
c++ 字符转十进制 | N进制转十进制
思想思想通过判断字符是数字还是,字母,然后减去0 ,‘a’ ‘A’ 字符结果就是十六进制,如果是字母要加10;代码如下int ChtoHex(char ch){ if ((ch >= '0') && (ch <= '9')) return ch - 48; else if ((ch >= 'a') && (ch <...原创 2019-12-27 16:49:59 · 3173 阅读 · 1 评论 -
Linux 下c++多线程同步之信号量
操作步骤:1.创建信号量 函数: int semget(key_t _key ,int _nsems,int _semflg); _key 为整型值,用户可以自己设定 _nsems 表示初始化信号量的个数。比如我们要创建一个信号量,则该值为1.,创建2个就是2。 _semflg :信号量的创建方式或权限。有IPC_CREAT,IPC_EXCL。 ...原创 2019-12-18 12:15:39 · 1056 阅读 · 0 评论 -
linux C++ pthread线程操作入门
线程操作:我们要做的1.创建线程2.线程阻塞 (当线程结束后,主线程才结束)3.线程返回 (获取线程返回的内容)// 函数的格式必须是这样的. void* name(void * param)void *semopFun(void *param){ cout << "NIHao" << endl; sleep(1); cout<<"thr...原创 2019-12-17 13:33:02 · 383 阅读 · 0 评论 -
c++ dos自定义测试框架
LOOP: cout << "CHOOSE DEBUG MODE:\n\tENTER INTO DEFAULT MODE\n\tOTHER INTO MANUL DEBUG MODE:\t"; // char buf[1024] = {0}; if (getchar() == 10) { while ((c = getchar()) != EOF &...原创 2019-12-17 11:12:30 · 283 阅读 · 0 评论 -
C++ string库 resize坑
#include <sys/time.h>int main(){ string str1; string str2; str1.resize(100000000); unsigned long realtime; struct timeval ts; unsigned long timecount; gettimeofday(&ts, NULL...原创 2019-12-16 17:52:27 · 2466 阅读 · 8 评论 -
关于makefile 快速掌握模板教程
1.想一想我们如果没有makefile的时候是如何生成可执行程序的呢? 第一步. g++ -E test.cpp //预处理替换掉宏定义 第二步. g++ -S test.cpp //会生成test.s的汇编程序 第三步. g++ -c test.cpp //生成目标文件 第四步. g++ test..o test.out -I ACE //连接.o文件,至此完成生成可执行文件te...原创 2019-12-06 10:47:34 · 255 阅读 · 0 评论