首先先贴一段代码: #pragma pack(4) struct test1 { char c1; short s; char c2; int i; }; #pragma pack() struct test2 { char c1; char c2; short s; int i; }; 结构体申明:    #pragma  pack(N)  
原创 2014-04-08 20:01:00
392阅读
                热爱C++的朋友请不要误会,我并不是在暗示“C++已经日薄西山”,或者任何类似的意思。从语义上来说,C++作为一门编程语言,当然不会有什么背影。事实上,我想说的是一个人的背影。因此这个题目显得有点突兀,甚
原创 2013-10-25 13:10:00
509阅读
&nbsp;&nbsp;Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1.&nbsp;map最基本的构造函数;&nbsp;&nbsp;map<string , int >mapstring;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma
c++
转载 精选 2015-05-28 21:38:41
329阅读
C注释 &nbsp; 转换为 &nbsp; C++注释
原创 2015-12-04 12:29:00
654阅读
http://www.cocoachina.com/bbs/read.php?tid=34997&nbsp;&nbsp;&nbsp;&nbsp; 1) .m开头包含c头文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3)创建c++类对象,并初始化,调用其成员函数同时修改
C++
转载 精选 2013-02-21 10:44:20
1333阅读
1、C语言内存分配问题int globalVar = 1; static int staticGlobalVar = 1; void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; const
1、内存溢出&nbsp; &nbsp; &nbsp; 内存溢出是指程序在申请内存时没有足够的内存空间供其使用。原因可能如下:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; (1)内存中加载的数据过于庞大;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; (2)代码中存在死循环;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; (3)递归调用太
原创 2019-03-17 22:35:00
70阅读
内存一共4个区&nbsp;1.任何在函数内部声明的非static变量,其变量地址本身在栈区。栈是向低地址扩展的数据结构,即栈顶的地址和栈的最大容量是系统预先规定好的。2.任何全局变量或者静态局部变量,其变量地址本身在全局区3.任何指针变量&nbsp;如果用malloc,relloc,calloc,或者c++中的new&nbsp;,指针指向的内存在堆区。堆是向高地址扩展的4.代码、字符常量在代码区其
转载 2023-06-07 15:16:00
114阅读
Leaktracer,Valgrind,ElectricFence 内存泄漏分类 以发生的方式来分类,内存泄漏可以分为4类: 常发性 发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 偶发性 发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对
转载 2016-11-03 09:59:00
333阅读
2评论
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐
转载 2012-04-13 13:07:00
200阅读
2评论
一、C/C++内存分布看下面这段代码:int globalVar = 1; static int staticGlobalVar = 1; void Test1() { static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; const char*
原创 2023-08-14 18:22:15
104阅读
namespace std;struct Test_A{ char a; char b; int c;};struct Test_B{ char a; int c;
转载 2022-09-26 15:10:42
90阅读
&nbsp; 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
原创 2011-07-21 17:25:07
255阅读
一、C语言分为几下几类:1.栈区(stack)由编译器自动分配和释放,存放函数的函数值,局部变量的值等。操作方式类似于数据结构中的栈。2.堆区(heap)一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。注意它同数据结构的堆是两回事,分配方式类似于链表。3.全局区(静态区static)全局变量和静态变量的存储是放在一起的,初始化的全部变量和静态变量在一块区域,未初始化的全局变量
原创 2013-08-07 21:05:45
423阅读
堆和栈的区别:1.申请方式栈:由系统自动分配的,例如,声明在一个函数中的一个局部变量int&nbsp;b,系统自动在栈中为b开辟空间。堆:需要程序员自己申请,并指明大小,在C中用malloc函数。如:&nbsp;p1=(char&nbsp;*)malloc(10);在C++中,用new运算符,如:p2=(char&nbsp;*)malloc(10);分配来的10字节的区域就在堆区。但是注意p1,p
原创 2013-08-07 21:41:18
521阅读
一、C内存分配情况&nbsp;&nbsp;&nbsp; 1、程序代码区:存放程序的二进制文件。&nbsp;&nbsp;&nbsp; 2、常量区(只读区):由编译器控制和释放,程序结束后释放;例如:char *str = "123456","123456"就存放在这个区。&nbsp;&nbsp;&nbsp; 3、全局区(静态区),全局变量和静态变量(包括全局和函数局部)都存放在这个区,初始化的全局
原创 2015-02-01 11:30:18
256阅读
内存区域:由这张图我们可以看到程序在内存中的分布,不同的变量存放在不同的区域,而内核空间是用户无法进行读写的用来存储有关的信息。要注意栈向下生长,堆向上生长,堆栈相对而生,我们今天主要谈在堆上申请空间的相关知识,我们知道在c语言中想要在堆上申请空间需要用到malloc、realloc、calloc这类函数,关于这些函数的相同与不同点大家可以参考我的另一篇博客。在c++中我们用心的关键字new、de
c++
原创 2019-10-10 22:31:52
659阅读
1.C/C++内存分布先看下边的代码体验一下:int globalVar = 1;static int staticGlobalVar = 1;void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; char* ...
1、c/c++内存分配1、栈区:由编译器自动分配和释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区:一般由程序员分配和释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事。3、全局(静态)数据区:全局变量和静态变量的存储是放在一块的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。4、文字常量
转载 2012-08-23 17:09:00
166阅读
2评论
正文开始publicTest()};//申请单个Test类型的空间Test*p1=(Test*)malloc(sizeof(Test));free(p1);
原创 2022-08-08 09:43:40
139阅读
  • 1
  • 2
  • 3
  • 4
  • 5