
C/C++
文章平均质量分 50
macrossdzh
这个作者很懒,什么都没留下…
展开
-
C++技巧之名字空间namespace
C的开发人员会经常使用#define,即用宏来声明常量,但宏却是全局的,对大的工程很难维护,经常是导致名字冲突。还好,C++给我们带来了namespace名字空间。它的使用如下,名字空间可以把一组逻辑分组,同时名字空间也是一种作用域。view plaincopy to clipboardprint?namespace outspname转载 2009-07-24 16:52:00 · 712 阅读 · 0 评论 -
C++中的内存分布
C++中,内存分为5个区:堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:是由编译器在需要时自动分配,不需要时自动清除的变量存储区。通常存放局部变量、函数参数等。堆:是由new分配的内存块,由程序员释放(编译器不管),一般一个new与一个delete对应,一个new[]与一个delete[]对应。如果程序员没有释放掉,资源将由操作系统在程序结束后自动回收。自由存储区:是由mall原创 2010-05-07 09:39:00 · 898 阅读 · 0 评论 -
dev c++中的conio.h头文件的问题
<br />今天在dev c++中调试一段代码,但是在链接阶段,dev c++报了找不到相关函数gotoxy(),clrscr(),cprintf()的定义,网上查了一下这几个函数的定义,都是在conio.h中定义的,但是代码里明明include了conio.h这个头文件,后来我打开了C:/Dev-Cpp/include下conio.h文件,发现里面非常简洁,根本没有那几个函数的定义,于是继续baidu,才找到了问题的根源:<br />89的标准库文件如下:<br />Headers<br />原创 2010-07-01 10:52:00 · 12225 阅读 · 1 评论 -
6个变态的C语言Hello World程序
<br />下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码<br />下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。<br />hello1.c #define _________ }<br /> #define ________ putchar<br /> #define _______ main<br /> #define _(a) ________(a);<br /> #define __转载 2010-07-12 21:20:00 · 966 阅读 · 0 评论 -
交叉编译的概念(关于嵌入式的一点儿知识)
交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。本地编译器是指它编译出来的程序可在本地机(即运行编译器的机器)上运行;而交叉编译器编译出来的程序不可以在本地机上运行。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机原创 2010-05-28 16:24:00 · 1635 阅读 · 0 评论 -
关于程序的编译和链接
一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。 编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在原创 2010-05-28 16:28:00 · 680 阅读 · 0 评论 -
kmalloc、vmalloc、malloc的区别
<br />简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大 内存只有在要被DMA访问的时候才需要物理上连续 vmalloc比kmalloc要慢<br /> <br />详细的解释:<br /> 对于提供了MMU(存储管理器,原创 2010-10-22 10:48:00 · 87335 阅读 · 9 评论 -
在Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
<br />内存泄露专题(Memory Leak)<br /> <br />以下转自IBM<br /> <br />韩 兆兵 (hanzb@cn.ibm.com), 软件工程师, IBM<br />刘 盈 (cdlliuy@cn.ibm.com), 软件工程师, IBM<br />强 晟 (qiangsh@cn.ibm.com), 软件工程师, IBM 2008 年 5 月 15 日<br /> <br />由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就转载 2010-11-07 21:32:00 · 11963 阅读 · 0 评论 -
如何将一个CString变量值加1
<br /><br />背景知识:<br />CString是通过“引用”来管理串的,“引用”这个词我相信大家并不陌生,象Window内核对象、COM对象<br />等都是通过引用来实现的。而CString也是通过这样的机制来管理分配的内存块。实际上CString对象只有<br />一个指针成员变量,所以任何CString实例的长度只有4字节. 即: int len = sizeof(CString);//len等<br />于4<br /><br />问题描述:<br />将一个CString变量(数字原创 2011-02-22 22:25:00 · 3040 阅读 · 0 评论 -
makefile的语法及写法
转自:http://topic.youkuaiyun.com/u/20070720/09/79922fb0-bbd6-403c-bba3-3c9bc8c71368.html 0 Makefile概述 --------------------------------------------------------------------------------什么是makefile?转载 2010-03-22 09:43:00 · 712 阅读 · 0 评论 -
一个二维数组指针的问题
挺不错的一个问题,自己整理了一下,详细可查:http://topic.youkuaiyun.com/u/20091214/10/da5c0155-6055-4ef5-8cb6-cad8fc72136c.html?seed=1804958680&r=61913848#r_61913848 问题:#include"stdio.h" void main() { int原创 2009-12-31 16:15:00 · 972 阅读 · 0 评论 -
void指针
转帖注明出处:http://www.cppblog.com/dragon/archive/2008/09/02/60760.aspxvoid指针 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型,编译器根据指针的类型从指针指向的地址向后寻址,指针类型不同则寻址范围也不同,比如:int*从指定地址向后寻找4字节作为变量的转载 2009-07-28 09:04:00 · 1072 阅读 · 0 评论 -
宏函数和普通函数的区别
#define S(a,b) a*barea=S(3,2)int S(int a,int b){ int s; s=a*b; return(s);}这两个有什么区别为了提高程序的效率,我们用define来定义一个函数,这样在频繁调用的时候就不会有函数调用的开销了,这就是宏函数,但宏定义只是把S(a,b)简单地替换成a*b,这样会产生问题,最典型的转载 2009-08-25 08:38:00 · 1592 阅读 · 1 评论 -
函数声明中的extern问题
函数的声明不需要使用extern关键字,通常我们也不这样用。因为: int func(); int func() { } 上面的两个非常清楚,第一个是声明,第二个是定义,因为函数声明在参数表括号后面是分号,而函数定义的参数表括号后面是花括号,无论对于人还是编译器,这个都非常转载 2009-09-02 09:10:00 · 4080 阅读 · 2 评论 -
strcpy写法及字符串指针问题
问题是从baiyuxiong发的那个“出现频率最高的笔试题strcpy写法+分析zz”帖子开始的: 题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。原创 2009-09-02 11:36:00 · 5276 阅读 · 0 评论 -
如何理解c和c++的复杂类型声明
转自:http://blog.youkuaiyun.com/Lambol_8309/archive/2009/09/06/4524453.aspx 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typed转载 2009-09-08 16:21:00 · 741 阅读 · 0 评论 -
return n和exit(int n)小结
exit(int n)其实就是直接退出程序,因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的。一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值,在main()里面,你可以用return n,也能够直接用exit(n)来做。unix默认的习惯正确退出是返回0,错误返回非0。 理论上ex原创 2009-09-08 16:56:00 · 1976 阅读 · 0 评论 -
句柄与指针的区别
句柄实际上是一种指向某种资源的指针,但与指针又有所不同:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄(本质上仍是一个指针,但不要直接操作它),平时你只是在调用API函数时利用这个句柄来说明要操作哪段内存。当你需要对某个内存进行原创 2009-09-24 15:00:00 · 15307 阅读 · 13 评论 -
优快云论坛中一个关于数组指针的讨论帖
挺不错的一个问题,自己整理了一下,详细可查:http://topic.youkuaiyun.com/u/20091214/10/da5c0155-6055-4ef5-8cb6-cad8fc72136c.html?seed=1804958680&r=61913848#r_61913848 问题:#include"stdio.h" void main() { int y[4][原创 2009-12-15 08:55:00 · 657 阅读 · 0 评论 -
汇编和编译
编译是将计算机语言转化为可以在计算机硬件上直接运行的机器语言,是翻译语言的一种 1,将高级语言变为机器语言,包括两种方法,编译是一种,另一种是解释; 2,将汇编语言变成机器语言的,叫汇编程序. 或者说:编译是一个动作,将高级语言变为机器语言,可以针对不同的语言;汇编当动词讲时只是针对汇编语言,当名词讲时就是汇编语言 机器语言是直接用二进制代码指令表达的计算机语言原创 2011-06-10 21:03:00 · 4967 阅读 · 0 评论