
知识点
文章平均质量分 81
glx2012
这个作者很懒,什么都没留下…
展开
-
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack): 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap): 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链转载 2013-04-07 11:27:18 · 454 阅读 · 0 评论 -
总结C++中的一些特殊情况
1. 当x为负的奇数时,右移位和除法运算的结果不相等。其他(正数、负偶数)情况一样。 因为负数在内存中是以补码的方式存储的 2. char *str = "microsoft"; cout cout 输出的是整个字符串(比较特殊,不明白为什么) 3. strlen遇到/0的时候结束。和sizeof的区别。 #include #include using原创 2013-04-07 17:21:57 · 633 阅读 · 0 评论 -
进程和线程的区别和联系
进程(process)是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。每个进程都有一个自己的地址空间,即进程空间(虚空间)。 线程(thread)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属原创 2013-04-07 11:12:42 · 646 阅读 · 0 评论 -
字符串常量放在内存中的静态存储区
一、在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回原创 2013-04-08 13:39:15 · 1541 阅读 · 0 评论 -
[C++]关于指针作为函数参数传递
【例1】Test函数的语句GetMemory(str, 100)并没有使str获得期望的内存,str依旧是NULL,为什么? ----------------------------------------------------------------------------------------------------------------------------------- v转载 2013-04-17 15:02:01 · 789 阅读 · 0 评论 -
C内存重叠问题,memcpy,memmov,strcpy
memcpy,memmove:它们都是从src所指向的内存中复制count个字节到dst所指内存中,并返回dst的值。当源内存区域和目标内存区域无交叉时,两者的结果都是一样的。但有交叉时不一样。源内存和目标内存交叉的情况有以下两种:(左边为低地址) 即:dstsrc 针对第一种交叉情况情况,dstsrc,memcpy和memmove的结果是一样的。请看下面的例子讲解: int原创 2013-04-17 17:26:19 · 1226 阅读 · 0 评论 -
Linux进程间通信(IPC)
linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe,又称为FIFO):管道可用于具有亲缘关系进程间的通信。有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身。 报文原创 2013-04-18 21:18:54 · 490 阅读 · 0 评论 -
你熟悉构造函数的调用吗?
#include using namespace std; class Base { friend ostream& operator<<(ostream &os,Base &b); public: Base() { cout << "Base()" << endl; } ~Base() { cout << "~Base()" << endl; } Base(const B原创 2013-04-19 11:31:14 · 669 阅读 · 0 评论