首先先贴一段代码: #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
432阅读
                热爱C++的朋友请不要误会,我并不是在暗示“C++已经日薄西山”,或者任何类似的意思。从语义上来说,C++作为一门编程语言,当然不会有什么背影。事实上,我想说的是一个人的背影。因此这个题目显得有点突兀,甚
原创 2013-10-25 13:10:00
548阅读
&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
423阅读
C注释 &nbsp; 转换为 &nbsp; C++注释
原创 2015-12-04 12:29:00
711阅读
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
1362阅读
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
原创 2024-03-01 00:49:58
344阅读
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
113阅读
sizeof与strlen的区别? 答:1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是运算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 4.数组做sizeof的参数不退化,传递给strlen
原创 2021-07-12 11:07:43
348阅读
我们通过一系列例子的详细说明来证明这个规则吧!我试验用的编译器包括GCC 3.4.2和VC6.0的C编译器,平台为Windows XP + Sp2。我们将用典型的struct对齐来说明。首先我们定义一个struc...
转载 2016-12-30 08:50:00
132阅读
2评论
一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32位)..
转载 2013-06-29 22:41:00
108阅读
2评论
C\C++ 内存对齐
转载 2021-07-30 17:20:04
190阅读
内存一共4个区&nbsp;1.任何在函数内部声明的非static变量,其变量地址本身在栈区。栈是向低地址扩展的数据结构,即栈顶的地址和栈的最大容量是系统预先规定好的。2.任何全局变量或者静态局部变量,其变量地址本身在全局区3.任何指针变量&nbsp;如果用malloc,relloc,calloc,或者c++中的new&nbsp;,指针指向的内存在堆区。堆是向高地址扩展的4.代码、字符常量在代码区其
转载 2023-06-07 15:16:00
145阅读
1.指针和引用的区别指针是一种变量类型,指针指向某种数据类型的地址。引用是变量的别名。类对象定义方法:动态内存分配数组数组对象2.参数传递参数传递有两种类型:按值传参数和按引用传递。指针和这两种方式没有必然联系,指针是一种变量类型,变量进行参数传递。所以指针既可以按值传参也可以按照引用传递参数。按值传递将实参进行拷贝(复制)后传递给形参,不改变实参的值。按地址传参数(引用传参),引用相当于是变量的
转载 2012-11-11 10:18:00
219阅读
2评论
Leaktracer,Valgrind,ElectricFence 内存泄漏分类 以发生的方式来分类,内存泄漏可以分为4类: 常发性 发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 偶发性 发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对
转载 2016-11-03 09:59:00
352阅读
2评论
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐
转载 2012-04-13 13:07:00
207阅读
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
197阅读
namespace std;struct Test_A{ char a; char b; int c;};struct Test_B{ char a; int c;
转载 2022-09-26 15:10:42
106阅读
&nbsp; 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
原创 2011-07-21 17:25:07
272阅读
一、C语言分为几下几类:1.栈区(stack)由编译器自动分配和释放,存放函数的函数值,局部变量的值等。操作方式类似于数据结构中的栈。2.堆区(heap)一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。注意它同数据结构的堆是两回事,分配方式类似于链表。3.全局区(静态区static)全局变量和静态变量的存储是放在一起的,初始化的全部变量和静态变量在一块区域,未初始化的全局变量
原创 2013-08-07 21:05:45
447阅读
堆和栈的区别: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
540阅读
  • 1
  • 2
  • 3
  • 4
  • 5