
C技巧
文章平均质量分 61
zerokkqq
这个作者很懒,什么都没留下…
展开
-
Valgrind内存泄漏工具的安装与使用 -- Linux
Valgrind内存泄漏检测工具是一个十分便捷的工具,可以很快速的检测出所写程序是否存在内存泄漏现象,这对于C/C++程序员显得尤为重要,因为不论你有多牛逼,也难以保证自己不会忘写一个delete或者free。一:安装步骤首先下载一个Valgrind安装包。1.解压安装包 zip格式用 uzip Valgrind.xx.zip,解压完成之后进入该文件夹。2.运行./autogen.sh设置环境在执...转载 2018-04-12 09:20:59 · 2276 阅读 · 0 评论 -
QEMU来创建一个,[教程在这]。
RASPBERRY PI ON QEMULet’s start setting up a Lab VM. We will use Ubuntu and emulate our desired ARM versions inside of it.First, get the latest Ubuntu version and run it in a VM:https://www.ubuntu.com...转载 2018-03-20 10:20:49 · 731 阅读 · 0 评论 -
ARM 汇编基础速成1:ARM汇编以及汇编语言基础介绍
译文声明本文是翻译文章,文章原作者,文章来源:azeria-labs.com原文地址:https://azeria-labs.com/writing-arm-assembly-part-1/译者:arnow117预估稿费:200RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿写在前面欢迎来到ARM汇编基础教程,这套教程是为了让你可以在ARM架构下进行漏洞利用打基础的。在我...转载 2018-03-20 10:19:27 · 23281 阅读 · 0 评论 -
Jenkins 持续集成综合实战
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的著名开源项目 fastjson,以此演示 Java 项目(SVN+Maven)中 FindBugs/CheckStyle/PMD 等常用插件的使用、单元...转载 2018-03-23 20:44:15 · 275 阅读 · 0 评论 -
利用单链表实现栈
栈是一种仅限于在头尾操作的数据结构,和队列相反,栈的特点是“现金后出”,因此又称为LIFO。和队列一样,栈也有链表和数组两种实现方式,各自的优缺点和介绍队列时提到的基本相同。以下介绍使用链表实现栈的方式(链式栈)。下面是链式栈的示意图:因为栈的特点是“先进后出”,因此我们只需要一个指针指示栈顶即可,因为无论插入或者删除都是针对顶部的节点而已,也就是说,我们需要实现一个“头节点”会变化的链表,并且每...转载 2018-03-19 13:51:51 · 533 阅读 · 0 评论 -
队列的实现(2):用链表实现队列
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.youkuaiyun.com/keheinash/article/details/51143573上一篇文章: http://blog.youkuaiyun.com/keheinash/article/details/51125063 利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时,无法再插入新的数据,只有等队头的数据被...转载 2018-03-19 13:50:44 · 277 阅读 · 0 评论 -
避免最常见的 10 大 JNI 编程错误的技巧和工具
原链接:http://www.ibm.com/developerworks/cn/java/j-jni/ 使用 Java Native Interface 的最佳实践避免最常见的 10 大 JNI 编程错误的技巧和工具Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已...转载 2018-03-22 16:41:00 · 307 阅读 · 0 评论 -
用C语言编的一个小解释器
转自::http://www.eeworld.com.cn/tags/%E7%94%A8C%E8%AF%AD%E8%A8%80%E7%BC%96%E7%9A%84%E4%B8%80%E4%B8%AA%E5%B0%8F%E8%A7%A3%E9%87%8A%E5%99%A8转载 2018-02-24 13:45:26 · 787 阅读 · 0 评论 -
只有140行代码的C语言解释器
【 以下文字转载自 CProgramming 讨论区 】 发信人: wax (ooo), 信区: CProgramming 标 题: 只有140行代码的C语言解释器 发信站: 水木社区 (Thu Feb 26 14:57:59 2015), 站内 https://github.com/xu4wang/recruit 里面有五道面试题。 源码的初始作者是: http://en.wikipe...转载 2018-02-24 13:42:26 · 3641 阅读 · 1 评论 -
Klib - C语言通用库
samtools,bwa等软件都会涉及到这个库,在项目中也比较方便加入这个库。 来自:https://github.com/attractivechaos/klib简介Klib是C语言写成的,独立,轻量级,并且遵循MIT/X11声明。其中的大部分只是用到了C标准库,相互之间也是独立的。如果使用这个库中的一部分,只需要将使用到的文件拷贝到你自己的项目中即可,而不用担心库的依赖关系。Klib致力于高效...转载 2018-02-24 09:46:52 · 106597 阅读 · 0 评论 -
Android JNI局部引用表溢出:local reference table overflow (max=512)
转载请注明出处:http://blog.youkuaiyun.com/xyang81/article/details/44873769在《JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用》这篇文章中详细介绍了在JNI中三种引用的使用方式,区别、应用场景和开发注意事项。由于都是理论,看完之后可能印象不够深刻,由其是在开发当中容易出错的地方。所以这篇文章用一个例子说明引用使用不当会造成的问题,...转载 2018-03-09 19:50:50 · 279 阅读 · 0 评论 -
C++模板深入理解
如何组织编写模板程序前言 常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却是“传统”...转载 2018-03-15 00:57:40 · 279 阅读 · 0 评论 -
ARM(CM3)的汇编指令
ADC 带进位加法(ADD with Carry) ADD 加法 AND 按位与。这里的按位与和C的”&”功能相同 ASR 算术右移(Arithmetic Shift Right) BIC 按位清零(把一个数跟另一个无符号数的反码按位与) CMN 负向比较(把一个数跟另一个数据的二进制补码相比较) CMP 比较(Compare,比较两个数并且更新标志) CPY 把一个寄存器...转载 2018-03-20 11:21:56 · 848 阅读 · 0 评论 -
LCUI 1.0 Beta 2 发布,C 的图形界面开发库
LCUI 是一个图形界面开发库,主要使用 C 语言编写,可借助 CSS 和 XML 来构建简单的桌面应用程序。问题修复一些内存泄露问题 (#135) (9995b23)gui: 部件大小计算错误 (095f4b8)renderer: 部件内容区域计算错误 (#122,#123) (0f81863)renderer: 部件内容溢出 (#144) (2a923a6)thread: 线程在退出后未释放之...转载 2018-03-20 13:48:02 · 433 阅读 · 0 评论 -
LCUI.css 0.1.0 发布, 基于 LCUI 开发的 UI 组件库
LCUI.css 是一个适用于 LCUI 应用程序的 UI 组件库。这是第一个版本,你可以访问项目主页了解更多信息。相关链接LCUI.css 的详细介绍:点击查看LCUI.css 的下载地址:点击下载转自:https://www.oschina.net/news/94380/lcui-css-0-1-0-released...转载 2018-03-20 13:52:19 · 282 阅读 · 0 评论 -
valgrind的介绍、安装和使用
Valgrind manual:http://valgrind.org/docs/manual/manual.html valgrind介绍:l Valgrind查找内存泄露利器Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free...转载 2018-03-29 11:38:17 · 609 阅读 · 0 评论 -
C语言内存管理:malloc、calloc、free的实现
任何一个对C稍稍有了解的人都知道malloc、calloc、free。前面两个是用户态在堆上分配一段连续(虚拟地址)的内存空间,然后可以通过free释放,但是,同时也会有很多人对其背后的实现机制不了解。 这篇文章则是通过介绍这三个函数,并简单的予以实现,对比现有C的标准库实现(glibc等)相比,并不是特别高效,我们重在阐述背后的基本原理。一、C程序的存储空间布局图1 text:整个用户空间的最低...转载 2018-04-03 19:38:12 · 345 阅读 · 0 评论 -
内存碎片及伙伴算法
今天学习到 Linux 内存分配问题,有些不明白,什么是内存碎片问题?以及为什么maloc()等函数每次分配内存后都会用 free()释放资源,为什么还会产生碎片问题?内存碎片问题如何产生 及 如何解决呢?以下是自己今天学习心得:内存碎片概念:内存碎片问题分为内部碎片和外部碎片两种。 1.内部碎片是由于采用固定大小的内存分区,当一个进程不能完全使用分给它的固定内存区域时,就将该进程分配后剩余的...转载 2018-04-02 20:24:40 · 636 阅读 · 0 评论 -
va_start,vsnprintf,va_end日记内存溢出解决!!!
vsprintf有三个参数。一个用於保存结果的字元缓冲区和一个格式字串。第三个参数是指向格式化参数阵列的指标。vsprintf(buffer,format,argptr); format:格式字符串;例子:int main(){ char buf[256] = { 0 }; double dno = 65280; sprintf(buf, "#%d%d%x", (int)(d...转载 2018-04-15 15:18:33 · 2512 阅读 · 0 评论 -
【Linux 内核】内存管理(二)伙伴算法
通常情况下,一个高级操作系统必须要给进程提供基本的、能够在任意时刻申请和释放任意大小内存的功能,就像malloc 函数那样,然而,实现malloc 函数并不简单,由于进程申请内存的大小是任意的,如果操作系统对malloc 函数的实现方法不对,将直接导致一个不可避免的问题,那就是内存碎片。内存碎片就是内存被分割成很小很小的一些块,这些块虽然是空闲的,但是却小到无法使用。随着申请和释放次数的增加,内存...转载 2018-04-02 20:20:55 · 243 阅读 · 0 评论 -
内存管理算法--Buddy伙伴算法
Buddy算法的优缺点:1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。2)算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅速。但是他也带来...转载 2018-04-02 19:56:03 · 279 阅读 · 0 评论 -
教你写Makefile(很全,含有工作经验的)
Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含...转载 2018-04-15 09:27:48 · 1071 阅读 · 0 评论 -
怎么让VC6.0支持可变参数宏定义?
用不着重载()这样就行:#include <stdarg.h> //包含va_list#include <stdio.h> //包含vsprintf()#include <string.h>#define MyPrtLog CPrtLogFunc(__FILE__,__LINE__).outclass CPrtLogFunc { public: char...转载 2018-03-27 11:16:58 · 1696 阅读 · 1 评论 -
Android NDK开发扫盲及最新CMake的编译使用
1 NDK 简介在介绍 NDK 之前还是首推 Android 官方 NDK 文档。传送门官方文档分别从以下几个方面介绍了 NDKNDK 的基础概念如何编译 NDK 项目ABI 是什么以及不同 CPU 指令集支持哪些 ABI如何使用您自己及其他预建的库本节将会对文档进行总结和补充。所以建议先浏览一遍文档,或者看完本篇文章再回头看一遍文档。1.1 NDK 基础概念首先先用简单的话分别解释下 JNI、N...转载 2018-03-26 18:00:36 · 238 阅读 · 0 评论 -
C 开发的图像读取解析库 stb-image
C 语言开发的一个简单易用的图像读取解析库,也是 Duilib 上用到的图像解析库。使用示例代码如下:#include <stdio.h>#define STB_IMAGE_WRITE_IMPLEMENTATION#include "stb_image_write.h"#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h...转载 2018-03-26 17:29:20 · 3830 阅读 · 2 评论 -
Android应用开发性能优化完全分析
http://blog.youkuaiyun.com/dreamchandev/article/details/51960196转载 2018-03-20 17:06:24 · 202 阅读 · 0 评论 -
Android进阶——Crash异常捕获并发送到服务器
本篇文章包含以下内容:Crash异常捕获的简单使用 Crash异常捕获并发送到服务器在项目中,我们常常会遇到Crash的现象,也就是程序崩溃的时候,这个时候最常看到的就是这个界面如果你的项目已经发布到市场上了,这样的崩溃对于开发人员是看不到的,所以我们得想方法将崩溃信息发送到服务器,交给我们的程序员查看,Google考虑到这一点,也提供了Thread.UncaughtExceptionHandle...转载 2018-03-14 20:52:57 · 459 阅读 · 0 评论 -
怎么在linux下俘获程序奔溃时的调用堆栈
对于Linux,Mac OS X,android,如果你使用gcc或者编译器使用glibc,你能使用backtrace()函数来打印堆栈信息,backtrace在execinfo.h中申明。 这里有一个例子,安装一个SIGSEGV处理用来打印stacktrace到stderr。baz()函数引发一个异常。#include <stdio.h>#include <execinfo....转载 2018-03-14 20:49:40 · 296 阅读 · 0 评论 -
ARM平台指令虚拟化初探
0x00:什么是代码虚拟化? 虚拟机保护是这几年比较流行的软件保护技术。这个词源于俄罗斯的著名软件保护软件“VmProtect”,以此为开端引起了软件保护壳领域的革命,各大软件保护壳都将虚拟机保护这一新颖的技术加入到自己的产品中。代码虚拟化是将程序代码编译为虚拟机指令即虚拟代码(自己定义的代码集),通过虚拟CPU解释并执行的一种方式,大致流程如下:我们抛开ARM平台CPU流水线机制不谈,简单来说...转载 2018-02-15 14:07:36 · 701 阅读 · 0 评论 -
自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
【详细参考:http://www.openedv.com/posts/list/954.htm#先自己开一开大的内存用于堆空间】这两天写的一个STM32上的内存管理函数,实现了malloc和free以及remalloc几个函数.还实现了一个内存使用率查询的函数.思路如下:将内存分块管理.内存池等分为固定大小的内存块.建立一个内存状态表转载 2018-02-03 21:15:21 · 1549 阅读 · 0 评论 -
一个简单而强大的单片机内存管理器-不带内存碎片整理
单片机简单内存管理器本代码基于无操作系统的STM32单片机开发,功能强大,可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便转载请注明出处:http://blog.youkuaiyun.com/u011833609/article/details/46834203memory.h[cpp] view plain copy prin转载 2018-02-03 21:10:33 · 737 阅读 · 0 评论 -
单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
实现的原理是将内存分成小的片段进行管理,代码如下:[cpp] view plain copy#define MEM_BLOCK_SIZE 4096 #define MEM_LARGE_BLOCK_THRESHOLD 40960 //>MEM_LARGE_BLOCK_THRESHOLD :requested siz转载 2018-02-03 21:08:36 · 351 阅读 · 0 评论 -
Keil中使用MicroLib,以及malloc
The C Standard Library (stdlib.h) contains a number of useful and common tools, including:string conversionpseudo-random sequence generationdynamic memory managementenvironmentsearching转载 2018-02-03 21:02:27 · 727 阅读 · 0 评论 -
Keil MDK 使用malloc()&free(),stm32简单测试可用
1.8.9 Using malloc() when exploiting the C libraryIf heap support is required for bare machine C, you must implement _init_alloc() and__rt_heap_extend()._init_alloc() must be called fi转载 2018-02-03 20:59:28 · 532 阅读 · 0 评论 -
无OS,8051调用malloc
简单的说,在8051这样的单片机上裸跑程序,可以直接用malloc()和free()函数吗?研究了一段时间,现在发现是不可以的。在PC上,只要#include "stdlib.h",就可以直接调用了。在单片机中,要调用malloc函数,需要实现内存管理函数,说白了就是开一个数组,然后用一个链表来记录数组里那些没有被使用的内存。以keil C51为例,要调用malloc,需要转载 2018-02-03 20:58:05 · 1240 阅读 · 0 评论 -
Linux下发送HTTP协议请求
在Linux系统中用C语言实现的HTTP协议的POST和GET请求,下面是代码实现,如果要测试需要搭建个后台服务器的环境,作者测试用的是PHP开发环境,具体搭建可参看另一篇文章:http://blog.youkuaiyun.com/hanbo622/article/details/51598648demo.c[cpp] view plain copy转载 2018-01-24 10:02:19 · 1824 阅读 · 0 评论 -
linux下HttpGet、HttpPost的C++实现
前段时间,帮朋友实现linux C实现HTTP get 及POst请求,最原先打算使用libcurl库实现。但是考虑到和其他接口通信的情况,暂时使用C 来实现.代码可以自动解析URL连接,具体看下面代码:[cpp] view plain copy/*File : http.h *Auth : sjin *Date : 20141206转载 2018-01-24 10:00:26 · 943 阅读 · 0 评论 -
sprintf.cpp
Go To English Version超过100万源码资源,1000万源码文件免费下载登录 注册关键字:搜资源搜代码分类平台分类源码/资料Windows编程Linux/Unix编程Internet/网络编程系统/网络安全通讯/手机编程游戏多媒体嵌入式/单片机编程图形图象压缩解压加密解密数值算法/人工智能Java编程转载 2016-12-24 21:49:25 · 631 阅读 · 0 评论 -
一个c++转c的工具(cfront源码)
最早的C++代码都是用cfront转成C代码然后用C编译器编译的。。。而且按照C++的设计准则,当你不适用一个特性的时候,相关代码是不会引入编译后的的目标文件中的,比如虚函数和RTTI之类的,所以如果你没有使用这些特性,也不会有性能损失。另外从开发效率上来说,因为C++的类型检查比C更为严格,避免了隐藏的错误(简单来说就是坑少了)。而且还有个STL。。。所以开发上来说,还是C++的效率高一转载 2016-11-01 09:17:34 · 10930 阅读 · 0 评论 -
控制台打印表格 (print tables in console application)
<br />控制台打印表格 (print tables in console application)<br />http://snipplr.com/view.php?codeview&id=13652<br /><br />/** @file<br /> * @brief 控制台打印表格 (print tables in console application)<br /> * Project Name:none<br /> * <br><br /> * Module Name:none<br /> *原创 2011-03-20 16:56:00 · 1344 阅读 · 0 评论