
学习日记
wangwang1103
无经验、资质浅
展开
-
内存二
五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束转载 2006-07-01 03:35:00 · 681 阅读 · 1 评论 -
C++类型中的转换--static_cast 和 reinterpret_cast
C++类型中的转换--static_cast 和 reinterpret_cast 人气:35343 STATIC_CAST VERSUS REINTERPRET_CAST sta转载 2006-07-01 03:59:00 · 860 阅读 · 0 评论 -
水滴石穿C语言之指针、数组和函数
基本解释 1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。 2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 问题:指针与数组 听说转载 2006-07-01 04:00:00 · 801 阅读 · 0 评论 -
水滴石穿C语言之编译器引出的问题
本节主要探讨C编译器下面两方面的特点所引发的一系列常见的编程问题。 对C文件进行分别编译:C程序通常由几个小程序(.c文件)组成,编译器将这几个小程序分别编译,然后通过链接程序将它们组合在一起形成一个目标代码。由于编译器每次只能编译一个文件,因此它不能立即检查需要几个源文件配合才能发现的错误。 对函数的参数和返回值建立临时变量C编译器会对函数的参数建立临时参数,转载 2006-07-01 04:01:00 · 728 阅读 · 0 评论 -
水滴石穿C语言之C语言的底层操作
C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。 下面结合问题分别进行阐述。 问题:移位操作 在运用移位操作符时,有两个问题必须要清楚: (1)、在右移操作中,腾空位是填转载 2006-07-01 04:03:00 · 925 阅读 · 0 评论 -
C语言的底层操作
C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。 下面结合问题分别进行阐述。 问题:移位操作 在运用移位操作符时,有两个问题必须要清楚: (1)、在右移操作中,腾空位是填转载 2006-07-01 04:04:00 · 1237 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别一、预备知识?程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)转载 2006-07-01 03:32:00 · 645 阅读 · 0 评论 -
C++代码优化方法
【导读】本文对C++ 代码优化进行了多种方法的介绍转载 2006-07-01 03:38:00 · 1016 阅读 · 1 评论 -
win32消息框
理论:Windows 为编写应用程序提供了大量的资源。其中最重要的是Windows API (Application Programming Interface)。 Windows API是一大组功能强大的函数,它们本身驻扎在 Windows 中供人们随时调用。这些函数的大部分被包含在几个动态链接库(DLL)中,譬如:kernel32.dll、 user32.dll 和 gdi32.dll。转载 2006-07-01 03:47:00 · 836 阅读 · 0 评论 -
水滴石穿C语言之声明的语法
概述 在很多情况下,尤其是读别人所写代码的时候,对C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是(*(void (*)( ) )0)( )。看起来确实令人头大,那好转载 2006-07-01 03:57:00 · 714 阅读 · 0 评论 -
水滴石穿C语言之内存使用
有人写了一个将整数转换为字符串的函数: char *itoa (int n){ char retbuf[20]; sprintf(retbuf, "%d", n); return retbuf;} 如果我调用这个函数:char *str5 = itoa(5),str5会是什么结果呢?转载 2006-07-01 03:56:00 · 725 阅读 · 0 评论 -
MFC消息响应机制分析
一.引言VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。这里我们简单的转载 2006-07-01 03:36:00 · 901 阅读 · 1 评论 -
C++的底层机制
c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。 但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal,大家都一样,原创 2006-07-01 03:39:00 · 1319 阅读 · 1 评论 -
深入了解C语言
C语言生成的代码在执行效率上比其它高级语言都高.现在让我们来看看C语言生成的代码具体是什么样子的.当你看完本文对于C语言的了解一定会更深一步了.本文通过一个个实际案例程序来讲解C语言.研究案例一工具: Turboc C v2.0,Debug,MASM v5.0,NASM实例C程序:/* example1.c */char ch;int e_main(){e_putchar(ch);}目标内容:C语转载 2006-07-01 03:42:00 · 795 阅读 · 0 评论 -
iostream.h 和 iostream的区别
条款2:尽量用而不用 是的,scanf和printf很轻巧,很高效,你也早就知道怎么用它们,这我承认。但尽管他们很有用,事实上scanf和printf及其系列还可以做些改进。尤其是,他们不是类型安全的,而且没有扩展性。因为类型安全和扩展性是C++的基石,所以你也要服从这一点。另外,scanf/printf系列函数把要读写的变量和控制读写格式的信息分开来,就象古老的FORTRAN那样原创 2006-07-01 03:45:00 · 1068 阅读 · 0 评论 -
浅谈内存泄漏
检测内存泄漏: 检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见Steve M转载 2006-07-01 03:48:00 · 629 阅读 · 0 评论 -
一个跨平台的 C++ 内存泄漏检测器
内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用、跨平台的C++内存泄漏检测器。并对相关的技术问题作一下探讨。基本使用对于下面这样的一个简转载 2006-07-01 03:51:00 · 699 阅读 · 0 评论 -
水滴石穿C语言之typedef的问题
1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef &am转载 2006-07-01 03:52:00 · 717 阅读 · 0 评论 -
水滴石穿C语言之可变参数问题
C语言中有一种长度不确定的参数,形如:"…",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。 原型: int printf( const char *format [, argument]... ); 使用例: printf("Enjoy yourself everyday!/n"); printf("The value is %d!/n", val转载 2006-07-01 03:54:00 · 784 阅读 · 0 评论 -
水滴石穿C语言之指针综合谈
Joel Spolsky认为,对指针的理解是一种aptitude,不是通过训练就可以达到的。虽然如此,我还是想谈一谈这个C/C++语言中最强劲也是最容易出错的要素。 鉴于指针和目前计算机内存结构的关联,很多C语言比较本质的特点都孕育在其中,因此,本篇和第六、第七两篇我都将以指针为主线,结合在实际编程中遇到的问题,来详细谈谈关于指针的几个重要方面。 指针类型的本质分析 1、指针的本质 指针的转载 2006-07-01 03:58:00 · 824 阅读 · 0 评论