
编程
yimu13
这个作者很懒,什么都没留下…
展开
-
检验CC++free和delete
有文章这样划分了C++的内存。 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由ma原创 2010-06-30 21:09:00 · 851 阅读 · 0 评论 -
C一些基础知识
<br />C语言是需要经常用才知道哪些东西不懂,才会有进步。最近突然发现自己对字符串常量,字符串指针等一些概念越来越模糊,今天就把最近的一些模糊不清的事情上网收集等方式来总结一下,加深自己的理解。<br />1. char a【size】 和 char *p = “abcdef” 的区别<br />首先要明白a是一个字符数组,系统为a在栈去分配size个字节的空间,而p是一个指针,其实就是一个指向内容不可以变化的指针,常量指针。系统在栈区分配四个字节,而后面的字符串常量系统在静态变量区分配7个字节的空间包原创 2011-04-21 17:36:00 · 593 阅读 · 0 评论 -
printf 可变参数
<br />转载<br />从printf谈可变参数函数的实现<br />作者:戎亚新<br />摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。 <br />关键字:printf, 可变参数 <br />1. 使用情形 int a =10;<br />double b = 20.0;<br />char *str =转载 2011-04-13 09:38:00 · 1200 阅读 · 0 评论 -
C语言——数组与指针
<br />指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。 <br /><br /> 想必这种误解的根源在于国内某著名的C程序设计教程。如果这篇文章能够纠正许多中国程序员对数组名转载 2011-05-13 23:43:00 · 694 阅读 · 0 评论 -
typedef使用大全(转) 一、数组 typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 #include #
<br />typedef使用大全(转)<br />一、数组<br />typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 <br />#include <stdio.h><br />#include <iostream.h><br /><br />/* 避免Visual C的for与标准for的不同 */<br />#define for if (0);转载 2011-05-13 23:45:00 · 1565 阅读 · 0 评论 -
C语言内存管理-字符数组与字符指针
堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的转载 2011-05-13 23:14:00 · 4886 阅读 · 6 评论 -
C语言——内存对齐
<br />写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.<br />/******************************分割线<br />如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?<br />体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就转载 2011-05-13 23:32:00 · 847 阅读 · 0 评论 -
C语言函数声明
<br />1.理解函数声明<br />经典的《C缺陷与陷阱》中提到的模拟开机启动,调用位于地址0的子例程<br />(*(void (*)())0)() ;关于该调用语句的理解,首先从简单的函数声明开始<br />声明一个函数:<br />void func() ;<br />声明一个函数指针,指向这类函数的声明:<br />void (*p)() ;<br />而同样的强制转换适应于函数类型,如下所示:<br />(void (*p)()) value ;<br />现在value已经转换成一个指向函数原创 2010-11-01 20:59:00 · 1379 阅读 · 0 评论 -
malloc free 和new delete
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)在用法上也有所不同。函数malloc 的原型如下:voi转载 2010-06-30 17:11:00 · 554 阅读 · 0 评论 -
sizeof()用法汇总
原文地址 http://blog.pfan.cn/wenzhuo316/19802.htmlsizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数转载 2011-08-13 13:40:22 · 531 阅读 · 0 评论