1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
//////////////////////////////////////////////////////////当年看得是E文,一时忘记了。
2010/04/27 Java面试题
2.8 heap和stack有什么区别。
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。
堆是栈的一个组成元素。
//////////////////////////////////////////////////////////
若一个静态成员函数采用类外定义,则函数头前面不应加上static关键字。///////规定
c++ primer 讲的我云里雾里!!!
protected成员是可以继承下来,继承下来了后,在编写派生类时,他的获取权限是属于这个派生类了,再也不属于基类了,就可套用private规则:只适用于本类,其它的类(包括基类)都不能直接操作。似乎这么去记忆就没有问题了,不会搞混了
link:http://blog.codingnow.com/2010/03/cpp_protected.html
//////////////////////////////////////////////////////////shell 读取文件
shell 脚本:一次读取文件的一行,并输出写法一:
#!/bin/bash
while read line
do
echo $line #这里可根据实际用途变化
done < urfile
写法二:
#!/bin/bash
cat urfile | while read line
do
echo $line
done
注意:以上代码中urfile 为被读取的文件
/////////////////////////////////////////////// 合成的默认构造函数
它使用了与变量初始化相同的规则来初始化成员。
对有类类型的成员,。。。。。。。。。
对内置和复合类型,。。。。。。。。。(在局部作用域,在全局作用域中,。。。。。。。。。。。。)
某某规则的依据:如果一个类在某种情况下需要控制对象的初始化,则该类很可 能在所有的情况下都需要控制。
汗!c++中的“合成的构造函数” 原来是这样理解的,“编译器自动生成的构造函数” 。
/////////////////////////////////////////////默认构造函数的形参列表中没有形参?错
所有形参都提供了默认默认实参的构造函数也定义了默认构造函数,而这样的构造函数形参列表中是有形参的。
////////////////////////////////////////////隐式类类型转化--
调用一个形参的构造函数定义了形参类型到该类类型的一种转化。
关于接受一个形参的构造函数应该为explicit :
优点:。。。。。。。
缺点:。。。。。。。
为转化而显式地使用构造函数。
////////////////////////////////////////////
类成员的显式初始化:
条件:其全体数据成员均为public。
约束:根据数据成员的声明顺序来使用初始化。
缺点:1,2,3点。。。。。
////////////////////////////////////////////
malloc 和 new 至少有两个不同:
- new 返回指定类型的指针,并且可以自动计算所需要大小。
- malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。
////////////////////////////////////////////
内存管理:
虚拟内存,
分段,分页,分块,段页
。。。。。。
////////////////////////////////////////////
关于那些static的使用:(与java的那些不同)
当我们在类的外部定义static成员时,无须重复指定static 保留字。
static 函数 没有this指针
static 数据成员 必须在类定义的外部定义。像普通的数据成员一样,不能在类的定义体中初始化。必须在static数据成员定义时初始化。
特例:特殊的整型 const static成员。
整型 const static 数据成员就可以在类定义体中进行初始化。
|||||||||||||||static vector<double> vec(vecSize);||||||||||||||||||||||||||||||
////////////////////////////////////////////
extern 使用
使用在变量与函数前,表明变量或者函数在别的文件中定义了,当编译器遇到这些变量时自动到其他模块寻找。
http://hi.baidu.com/ice_water/blog/item/2119a06ef9ee27d281cb4a9a.html
////////////////////////////////////////////
sizeof 这个特殊的“预处理”的使用,编译时确定。sizeof 结果是编译时的常量。
http://www.cnblogs.com/thepiece/archive/2010/03/08/1680656.html
////////////////////////////////////////////
深入理解计算机系统之存储器层次结构
高速缓存的结构描述形式:(S,E,B,m)
S是组数
E是每个组的行数
B是块大小(字节)
m = log(M) (主存)物理地址位数
高速缓存的大小(或者容量)C指的是所有块的大小的和,标记位和有效位不包括在内,C=S*E*B,
PS:这里的C指不包括像有效位和标记位这样开销的高速缓存大小(字节)
============不提细节
高速缓存的种类(根据每个组中的行数E)
- 直接映射高速缓存(常考点:E=1)
- 这种类型的高速缓存存在一个问题是:抖动现象
- 抖动现象指:高速缓存反复地加载和驱逐缓存块相同的组(程序员需注意的地方)
- 组相联高速缓存(E>1)
- 全相联高速缓存(只有1个组:S=1,物理地址就没有s这个索引组位)
回写和直写
回写解决的问题:直写中每条存储指令都会引起总线上的一个写事务。
回写的特点:尽可能地推迟存储器的更新,只有当替换算法要驱逐已更新的块时才把它写到存储器。
高速缓存友好的代码
基本方法
1,让最常见的情况运行得快。
2,在每个循环内部使缓存不命中数量最小。
对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器堆中(时间局部性)
步长为1的引用模式是好的,因为存储器层次结构中所有的层次上的缓存都是将数据存储为连续的块(空间局部性)。
而对于多维数组进行操作的程序中,空间局部性尤其重要。
综合:高速缓存对程序性能的影响
- 存储器山()
- 重新排列循环以提高空间局部性
- 使用分块来提高时间局部性
////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
分享到:
相关推荐
用java写植物大战僵尸源码僵尸对植物 一个 C++ 游戏,类似于 Zombies vs Plants 游戏,但选项有限。 该游戏是在德黑兰大学 2017 学期期间作为高级编程(由 )项目开发的。 僵尸正试图穿过你的后院并进入房子(为了吃...
我所使用的语言是C语言,为什么要强调是C语言呢,因为好多菜鸟C和C++不分,明明标注的资源是C语言的,结果浪费了积分、花了好长时间下载下来一看才知道是特么C++语言,各种乱七八糟的类型就出来了,照抄别人的资源或...
ACM/ICPC是一项团队竞技的编程比赛,每队由3名在校学生组成,比赛期间需要在5小时内使用C、C++或Java编写程序解决7到10个问题。比赛形式多样,如Topcoder、Codeforces等在线平台也提供了类似的比赛,对快速准确地...
编程语言是游戏开发的基础,常见的编程语言有C语言、C++、Java、Python等。在游戏开发中,编程语言用于编写游戏逻辑、游戏引擎、游戏界面等各种组件。编译是将人写的代码转换为机器能识别的二进制代码的过程。在游戏...
笔者找来了一个叫做 ANTLR 的工具(它是 PCCTS 的新版,支持生成 java,c++和 c#代码),又下载了一个 c 语言的语法文件(因为笔者需要处理 c 代码文件),然后自己编了少量动作(action)语句,界面代码,分析处理代码等...
Java是由Sun Microsystems公司(现已被Oracle收购)开发的一种高级编程语言,其语法与C++类似,但更注重内存管理和垃圾回收,降低了程序出现错误的概率。 1.1.2 Java特点 Java的特点包括:面向对象、健壮性、安全性...
1. **基础语法**:Java的基础语法类似于C++,但更注重简化和防止程序员犯错。例如,它没有指针,而是使用引用,这减少了内存管理中的安全隐患。 2. **类与对象**:Java是纯面向对象的,一切皆为对象。类是创建对象...
如Box2D是一个流行的2D物理引擎,虽然它主要是为C++设计的,但也有Java版本。 3. **音频处理**:Java Sound API是Java中处理音频的标准库,RogueEngine可能会用到这个API来播放背景音乐和音效。 4. **输入处理**:...
2. **主文件(main)**:在编程中,“main”经常被用作程序的入口点,比如在C/C++、Java等语言中的`main`函数。"hzjsbssj-main"可能是项目的核心或启动文件。 3. **版本控制**:在开发过程中,使用版本控制系统如...
1. **Java语法**:Java的语法与C++类似,但更加简洁。它包括变量声明、方法定义、条件语句(如if-else)和循环(如for、while)。每个Java程序都始于一个`public class`,并包含一个`main`方法,这是程序执行的起点...
与Protobuf不同,Flatbuffers不需要先解码整个数据结构就能访问其中的字段,这使得它在处理大量数据时具有显著的性能优势。在HPC环境中,这种低延迟的特性可能特别重要。 3. **MsgPack**:MessagePack是一个轻量级...
通常,如果这是一个软件开发相关的压缩包,"main"可能指的是主要的代码库或应用程序的主入口点,这可能与编程语言(如Java、Python或C++)、框架(如React、Angular或Django)或者版本控制系统(如Git)有关。...
3. **技能清单**:列出你的技术能力,如编程语言(Java、Python、C++等)、框架(React、Angular、Vue.js)、数据库管理(SQL、NoSQL)、操作系统(Windows、Linux、macOS)及其他相关工具。 4. **工作经历**:按...
在这个项目中,Makefile可能包含了编译protobuf定义为不同语言(如Python、Java、C++等)的客户端库的指令。 protobuf是Google的一种数据表示语言,它允许用户定义数据结构,并能将这些结构转换为JSON或其他格式,...
支持的编程语言包括C++、Objective-C、C#、Java、Python和JavaScript等。同时提供了操作系统支持的信息。 8. Leap Motion 用户体验指南 这部分介绍了如何使用Leap Motion的可视化工具,包括一般控制、摄像头控制、...
在IT行业中,游戏开发是一项复杂而充满挑战的任务,它涵盖了编程、艺术设计、音效、动画、用户体验等多个领域。在这个示例中,我们有一个名为"示例游戏:一个假想游戏的测试库...哟!"的项目,这显然是一个用于教学...
【学习笔记:我的学习笔记】 这是一份个人的学习笔记,主要涵盖了广泛的IT知识领域,旨在帮助读者系统地理解和掌握信息技术的基础以及进阶概念。在这个压缩包文件“learning-notes-master”中,我们可以期待找到一...
10. **性能优化**:Python虽然在速度上可能不如C++或Java,但通过一些策略如列表推导式、生成器、装饰器等,仍能有效提升代码运行效率。 总的来说,这个"LeetCode-Solutions"项目展示了如何利用Python解决各种算法...
ocelotter是一个开源项目,其目标是在Rust编程语言中实现一个简单的Java虚拟机(JVM)。这个实验项目旨在探索如何利用Rust的强大特性和安全性来构建高效、可靠的虚拟机。Rust是一种系统级编程语言,以其内存安全和...