![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发技术
文章平均质量分 69
程适场
这个作者很懒,什么都没留下…
展开
-
perf进阶-event实践
多线程程序效率过低的定位方法。如何根据异常运行的代码确定使用perf list中的哪一种事件。原创 2022-07-12 22:14:09 · 384 阅读 · 0 评论 -
IEEE754标准与异常值判断
什么是IEEE754IEEE754是一种浮点数标准,以c语言中的单精度float为例子。在结构上包括1位符号位,8位指数位以及23位尾数。00000 0000000 0000 0000 0000 0000 00001位符号位8位指数位23位尾数signexponentsignificand换算方式:(−1)sign×2exponent×significand(-1)^{sign}\times2^{exponent}\times{significand}(−1)原创 2022-03-22 22:25:06 · 2401 阅读 · 0 评论 -
C语言开发之CMakeList(其三)
我们已经介绍过单目录结构与多目录结构的CMakeLists.txt使用方法,下面介绍如何利用CMakeLists实现类似于C++模板的东西。下面的内容与单目录结构以及多目录结构CMakeLists实现密接相关,建议看完前两个再看这一篇。应用场景开发某个基于C语言的项目,要求实现单精度与双精度计算版本。目录结构 |--examples | |--add_example.c | |--sub_example.c | |--CMakeLists.txt |--CMa原创 2022-03-18 21:00:33 · 1899 阅读 · 0 评论 -
C语言开发之CMakeLists以及gtest测试在C语言中的使用方法(其四)
建议在C语言开发之CMakeLists(其三)中看一下代码结构,下面的内容仅仅涉及gtest测试C语言项目的方法。具体思路gtest可以用于C++的测试,无法直接应用到C语言项目中。我们不妨将C语言项目打包成静态库,在C语言项目外单独建立gtest测试文件。extern为了使C++调用C语言项目,需要在头文件部分添加extern “c”,告诉c++这是C语言程序。项目目录结构如下: |--test | |--gtest.cpp | |--alg | | |--原创 2022-03-18 22:17:36 · 2408 阅读 · 0 评论 -
C/C++开发之CMakeList(其二)
嵌套式CMakeLists写法,文件结构如下: |--examples | |--add_example.c | |--sub_example.c |--CMakeLists.txt |--add | |--add.c | |--add.h |--sub | |--sub.c | |--sub.h文件内容详情见C/C++开发之CMakelist(其一)将C/C++开发之CMakeList(其一)的内容推广,我们可以将对原创 2022-03-15 21:34:54 · 4618 阅读 · 0 评论 -
C/C++开发之CMakeLists(其一)
CMakeList简介略使用方式入门级文件目录 |--add.h |--add.c |--sub.h |--sub.c |--CMakeLists.txt |--add_example.c |--sub_example.c源文件包括sub.h,sub.c,add.h与add.csub.h#ifndef __SUB_H#define __SUB_H#include<stdio.h>int my_sub(int a, int b);原创 2022-03-14 22:14:54 · 1402 阅读 · 0 评论 -
C语言开发之UNION
union简介union常见于C语言嵌入式开发中,union中的数据分享同一段内存,大小与最大的数据类型一致。union应用查看浮点数的16进制表示:#include<stdio.h>#include <stdint.h>uint32_t float2int(float a){ union{ float a; uint32_t b; }u; u.a = a; return u.b;}int main(原创 2022-03-10 22:11:01 · 1073 阅读 · 0 评论 -
C语言开发之内存管理
问题引入函数exec_func(int* arr, int len)内部申请多个动态数组,当程序执行过程中出现错误时,需要将之前申请的数组全部释放掉,导致代码过于冗长。#include<stdio.h>#include<stdlib.h>#include<time.h>int exec_func(int* arr, int len){ for(int i = 0; i < len; i++){ arr[i] = 1; }原创 2022-03-10 19:20:49 · 913 阅读 · 0 评论 -
程序性能分析工具perf
简介https://zhuanlan.zhihu.com/p/141694060使用方法编写test_perf.c程序如下#include<stdio.h>#include<stdlib.h>void test_perf(){ int row = 10, col = 100; double* arr = (double*)malloc(sizeof(double) * row * col); for(int i = 0; i < row;原创 2022-03-09 22:22:18 · 703 阅读 · 0 评论 -
内存泄漏工具asan
简介https://zhuanlan.zhihu.com/p/360135083使用方式查找动态库位置find /usr -name 'libasan.so'#/usr里面没有也可以全局查找或自行安装find / -name 'libasan.so'#输出位置如下/usr/local/lib64/libasan.so添加动态库export LD_PRELOAD=/usr/local/lib64/libasan.so添加编译选项 -Lasan -fsanitize=address原创 2022-03-07 21:06:17 · 2395 阅读 · 0 评论