C/C++语言
文章平均质量分 85
_windness_
这个作者很懒,什么都没留下…
展开
-
C/C++ struct初始化/复制/内存分配技巧
为了方便后面的介绍,先定义一个struct类型: struct User { int id; //id char name[100]; //user name char *home; //home directory转载 2014-07-30 14:55:56 · 10685 阅读 · 0 评论 -
C++常见内存错误汇总
一、前言从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序.由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用。转载 2014-07-31 15:59:42 · 902 阅读 · 0 评论 -
C语言 命令行参数 函数指针 gdb调试
.作者 : 万境绝尘转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshuliang.com/?post=29.1. C语言命令行参数详解命令行参数 : 有两个参数 int argc 和 char **arg转载 2014-07-31 15:02:29 · 3629 阅读 · 0 评论 -
C语言中的register关键字
原文链接:http://www.cnblogs.com/xcamel/p/3864458.html在C语言中的register修饰的变量表示将此变量存储在CPU的寄存器中,由于CPU访问寄存器比访问内存快很多,可以大大提高运算速度。但在使用register时有几点需要注意。1.用register修饰的变量只能是局部变量,不能是全局变量。CPU的寄存器资源有限,因此不可能让一个变转载 2014-07-31 17:07:14 · 646 阅读 · 0 评论 -
GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解..作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18812279.GitHub操作流程 :第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联,转载 2014-07-31 15:04:05 · 4063 阅读 · 0 评论 -
UML入门 之 交互图 -- 时序图 协作图详解
.作者 : 万境绝尘转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131.动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图;-- 时序图 : 显示对象之间的关系, 强调对转载 2014-07-31 15:05:40 · 106188 阅读 · 9 评论 -
二叉树遍历之递归算法
作者:原文链接:http://blog.csdn.net/sgbfblog/article/details/7773002二叉树的遍历算法有多种,典型的有先序遍历、中序遍历、后序遍历以及层序遍历。而且这些遍历的递归算法较为简单,代码很少,容易实现,本文就是汇总二叉树遍历的递归算法,非递归算法将在下一篇文章中进行总结。本文中用到的二叉树实例如下: 3 /转载 2014-07-31 21:41:50 · 1118 阅读 · 0 评论 -
C文件包含.h文件和包含.c文件总结
原文链接: 很多人对C语言中的 “文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段。 文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中。在源文件编译时,连同被包含进来的文件一同编译,生成目标目标转载 2014-07-31 22:18:06 · 6507 阅读 · 0 评论 -
嵌入式编程中的常用技巧
原文链接:http://www.cnblogs.com/xcamel/p/3613911.html假设一个8位的寄存器,不能够直接进行位寻址,而又要使字赋值时不影响的其他位。那么要给某一位置0,置1,取反的常用写法。下面以第五位为例进行说明(reg为该八位寄存器):将第5位置0:reg&=~(1将第5位置1:reg|=(1将第5位取反:reg^=(1转载 2014-07-31 17:09:12 · 638 阅读 · 0 评论 -
C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
1.内存分配方式内存分配方式有三种:[1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。[2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中 ,效率很高,但是分配的内存容量有限。[3] 从堆上分配转载 2014-07-30 15:01:02 · 877 阅读 · 0 评论 -
C语言中的static关键字
原文链接:在C语言中,"static"既可用于修饰函数,也可用于修饰变量,细细总结起来有以下几个功能:1.static修饰函数。在工程中如果包含多个源文件,声明函数时加上static则表示仅将该函数的作用范围限定于本文件,对外部源文件是不可见的。2.static修饰局部变量。一般而言,局部变量存储于动态存储区,如果局部变量加上static修饰,则将此局部存储于静态存储区转载 2014-07-31 17:02:03 · 388 阅读 · 0 评论 -
野指针,悬垂指针,垃圾内存,内存“黑洞”
作者:原文链接:http://blog.csdn.net/zlhy_/article/details/8794969野指针首先他不是NULL指针,其次他指向的内存是不合法的,这个不合法的内存俗称“垃圾”内存。它产生的原因一个是在free或是delete后,没有及时将指针设置为NULL。野指针的检测也是很困难的,比如用if(0 == ptr)也是不行的,因为在free或是delete转载 2014-07-31 16:53:32 · 863 阅读 · 0 评论 -
C/C++字节对齐问题总结
原文链接:转载 2014-07-31 22:19:35 · 1862 阅读 · 0 评论 -
c语言判断文件的存在性
使用函数access,头文件是io.h,原型: int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性: 06 检查读写权限 04 检查读权限 02 检查写权限转载 2014-07-30 10:54:18 · 552 阅读 · 0 评论 -
C 结构体内存对齐原则
最近在实习的公司,作为新人和其他的新人做了一个新人技术交流会,主要是关于C的一些基础知识,包括了C的编译,链接,指针,数组,字符串,结构体等,以及一些项目相关的知识,总的来说技术交流会还是很有用的,大家可以相互讨论,这样更容易理解。好了,言归正传,C中对于结构体的使用可以说是非常的频繁和必要的,正确理解结构体的内存对齐原则,对于用好C是很有必要的(小子在实际项目中确实遇到过一个结构体内存对齐引起的转载 2014-07-30 10:45:59 · 4930 阅读 · 1 评论 -
编译器的编译基本过程
编译器最基本的功能就是把高级语言(例如C/Fortran)编写的代码转化为机器指令(就是01串),从这个角度来说它本质上是个转换过程。经典的编译过程主要包括:1、词法分析(Lexical Analysis)词法分析就是从输入代码中识别出各种记号(token),例如对于C语言我们就需要知道if,else等是语言的关键字,myvar是个标识,而123myvar不能被识别为一个标识。负责转载 2014-07-31 17:56:57 · 2710 阅读 · 0 评论 -
Eclipse直接完成JAVA调用C/C++ (Eclipse上使用CDT结合MinGW)
原文地址:http://www.blogjava.net/orangewhy/archive/2007/05/24/119645.html 网上都有很多在windows平台下JAVA调用C/C++方法的介绍说明。但是,在此过程中,绝大多数都是利用VC等其他工具来进行DLL的生成。试想一下,在eclipse平台开发了JAVA,突然又要打开VC的工作环境,多不爽!何况如果内存不够的话转载 2015-04-15 09:15:53 · 2803 阅读 · 1 评论 -
Eclipse C/C++开发调试环境安装记录
1. 安装JDK工具主页:http://www.oracle.com/technetwork/java/index.html下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html http://download.oracle.c原创 2015-04-15 12:07:06 · 4550 阅读 · 0 评论 -
C进阶指南(2):数组和指针、打桩
原文地址:http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html翻译地址:http://blog.jobbole.com/72830/三、指针和数组尽管在某些上下文中数组和指针可相互替换,但在编译器看来二者完全不同,并且在运行时所表达的含义也不同。转载 2014-07-30 22:33:47 · 453 阅读 · 0 评论 -
C进阶指南(1):整型溢出和类型提升、内存申请和管理
原文地址:http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html翻译地址:http://blog.jobbole.com/72830/C语言可用于系统编程、嵌入式系统中,同时也是其他应用程序可能的实现工具之一。 当你对计算机编程怀有强烈兴趣的时候,却对C语言不感冒,这转载 2014-07-30 22:34:32 · 605 阅读 · 0 评论 -
C结构体内存分配及sizeof大小总结
1.结构体变量的首地址应该是结构体大小的整数倍(当结构体大小大于处理器位数(现在一般是64位即8字节)时,应该是处理器位数(字节数)的整数倍)2.结构体成员相对于结构体首地址的偏移量应该是该成员大小的整数倍。(当成员大小大于处理器位数时,偏移量应该为处理器位数的整数倍)(如有需要编译器会在成员之间加上填充字节 )3.结构体总大小为结构体最大成员长度的整数倍(如果结构体最大成员的大小转载 2014-07-30 10:52:18 · 878 阅读 · 0 评论 -
malloc()和free()函数的讲解以及相关内存泄漏问题
1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内转载 2014-07-30 10:53:34 · 2242 阅读 · 0 评论 -
C程序内存分配
在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。第1节主要介绍内存管理基本概念,重点介绍C程序中内存的分配,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。第2节主要介绍C语言中内存分配及释放函数、函数的功能,以及如何调用这些函数申请转载 2014-07-30 10:56:58 · 637 阅读 · 0 评论 -
C/C++程序中致命的内存分配问题
C/C++程序中致命的内存分配问题 你是否曾经这样定义过变量:int a[50]; ?或许你会说,这是一句再普通不过的代码了。那么 int a[1000000]; 呢?int a[512][512]; 呢?用了这么久的 VC,直到今天才发现,自己连最基本的东西还没弄清楚。请看下面的这篇文章: 一、预备知识——程序的内存分配 一个由 C/C++编译的程序占用的内存分为以下几转载 2014-07-30 10:58:46 · 741 阅读 · 0 评论 -
C和C++中动态分配内存,区别
c是malloc和free,c++是new和delete,(C++面向对象的)区别如下:(1)new、delete 是操作符,可以重载,只能在C++中使用。(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。(4)malloc仅仅分配内存,free仅仅回收内转载 2014-07-30 10:49:52 · 635 阅读 · 0 评论 -
内存分配 指针和数组对比(已阅读)
内存分配方式 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去转载 2014-07-30 14:40:49 · 1640 阅读 · 0 评论 -
C/C++ 传递动态内存
当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。这些往往会使人受尽折磨。所以如果你想深入C/C++编程,你必须静下心来,好好苦一番。 现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递。并且在软件开发中很多专业人员并不能写出相关的合格的代码。 【引入】 看下面的例子,这是我们在编写转载 2014-07-30 10:48:54 · 482 阅读 · 0 评论 -
C语言内存相关
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2014-07-30 10:46:36 · 354 阅读 · 0 评论 -
gdb反汇编详解C函数底层实现笔记(程序堆栈、内存分配)
以下是在读《深入理解计算机系统》前面的章节“程序的机器级表示”时,自己动手在linux上使用了gdb对一个简单的C程序进行反汇编,通过不懈的努力终于查清楚弄明白了绝大多数的语句。且均以注释的形式列在汇编语句后面。 所有这些注释大概花了整整一天时间,不过还好,感觉对于C程序的机器级实现终于算是有了一个比较透彻的理解,对于以前编译出现的有些bug的原因有了一种原来如此的感慨。感觉这段转载 2014-07-30 10:58:30 · 3302 阅读 · 0 评论 -
C 使用异或(xor)加密/解密文件
C 使用异或(XOR)加密/解密文件之前写过一篇《php 使用异或(XOR)加密/解密文件》,但php执行的速度很慢,因此这次使用C重写,速度有很大的提高。转载 2014-07-31 13:52:36 · 1122 阅读 · 0 评论 -
C语言 指针数组 多维数组
作者:傲雪星枫原文链接:http://blog.csdn.net/fdipzone/article/details/204136311.冒泡排序算法过程:1.遍历整个数组,每两两相邻的元素进行比较,如$a[$i]>$a[$i+1]则互换位置,每次比较消除一个逆序。2.每一次循环后,下次再需要循环的次数减少1。转载 2014-07-31 13:54:02 · 888 阅读 · 0 评论 -
C语言 结构体相关 函数 指针 数组
.作者 : 万境绝尘转载请注明出处 : http://www.hanshuliang.com/?post=30.结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同;-- 可进行的操作 : 结构体可以进行 拷贝 赋值操作, 可以作为 函数参数 和 函数返回值;1. 结构体的基本使用结构体声明 : s转载 2014-07-31 15:01:24 · 779 阅读 · 0 评论 -
C进阶指南(3):显式内联、矢量扩展、C的逸闻轶事
五、显式内联函数代码可被直接集成到调用函数中,而非产生独立的函数目标和单个调用。可显式地使用 inline 限定符来指示编译器这么做。根据 section 6.7.4 of C standard inline 限定符仅建议编译器使得”调用要尽可能快”,并且“此建议是否有效由具体实现定义”要用内联函数优点,最简单的方法是把函数定义为 static ,然后将定义放入头文件。转载 2014-07-30 22:37:31 · 647 阅读 · 0 评论 -
C语言 内存分配 地址 指针 数组 参数 实例解析
作者 : 万境绝尘转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/20472269.指针简介 : 指针式保存变量地址的变量;-- 增加阅读难度 : 指针 和 goto 语句会增加程序的理解难度, 容易出现错误;-- ANSI C : American National Stan转载 2014-07-30 22:25:27 · 752 阅读 · 0 评论 -
C语言二维数组矩阵动态内存分配
原文链接:最近去参加面试,遇到二维数组矩阵动态内存分配,面试官当场叫我写个double类型的20*30的二维数组动态内存分配,当时就懵了,由于没有准备平时运用得比较少,结果没有写出来。。。。回来想想也并不是这么难,double类型的20*30二维数组分配内存[cpp] view plaincopydouble **p; int i;转载 2014-07-30 22:29:06 · 1920 阅读 · 1 评论 -
百度电面题 C和C++ 语言动态内存分配 的区别
一、C语言动态内存分配 要实现动态内存的分配,除了利用含指针成员的结构体之外,还需利用C语言提供的几个标准库函数。(使用时应包含头文件“alloc.h”或“malloc.h”或“stdlib.h”) 1.malloc函数 函数原型为void *malloc(unsigned int size);在内存的动态存储区中分配一块长度为"size" 字节的连续区域。函转载 2014-07-30 21:31:37 · 460 阅读 · 0 评论 -
拆解GCC命令的预处理-编译-汇编-链接4个阶段
在linux下使用gcc命令编译程序时,整个过程实际上在底层处理分为四个步骤--预处理/编译/汇编/连接下面通过gcc的不同命令参数来拆解这四个步骤。...转载 2014-07-31 22:02:09 · 1321 阅读 · 0 评论