一、shared_ptr 最安全的分配和使用动态内存的方法是调用一个名为make_shared的标准库函数。此函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr。 如果我们不传递参数,对象就会进行值初始化。 shared_ptr内部有一个引用计数变量,记录有多少个其他sha ...
分类:
其他好文 时间:
2017-09-23 13:30:24
阅读次数:
203
一直以为c++可以这样 : int n; cin>>n; //输入a数组的长度 int a[n]; //企图根据n的值决定数组的长度 结果看到这个: 下面是codeblocks上面的运行结果:这个能运行出来 下面是在devc++上的运行结果:这个提示错误 这可能是codeblock的bug吧 ...
分类:
编程语言 时间:
2017-09-22 10:19:52
阅读次数:
165
1:正确的步骤应该是如下代码所示: // 5.15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> void swap(int* a,int* b) { int temp = *a; *a = *b; *b = temp ...
分类:
编程语言 时间:
2017-09-15 15:31:47
阅读次数:
262
1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光 ...
分类:
编程语言 时间:
2017-09-13 14:07:41
阅读次数:
218
C++的内存布局 在C++中内存被分为5个部分,分别是堆、栈、自由存储区、全局/静态存储区以及常量存储区。 自由存储区与堆的区别 堆是C语言和操作系统里的术语,它是由操作系统维护的一块特殊的内存,当C程序调用malloc函数进行动态内存分配时就是从堆上获取内存的,而调用free函数可以交还分配的内存 ...
分类:
其他好文 时间:
2017-09-10 12:29:22
阅读次数:
119
基本概念: 内存: SRAM 静态内存 特点:容量小、价格高,优点:不需要软件初始化,上电就能用。 DRAM 动态内存 特点:容量大、价格低,缺点:上电不能用,需要软件初始化。 单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM。 嵌入式系统:内存需求量大,而且没有NorFlash等可 ...
分类:
其他好文 时间:
2017-09-08 00:25:08
阅读次数:
249
MD(d)和MT(d) MD(d)和MT(d)是windows下VC开发的两个编译选项,表示程序的运行时库编译选项。 /MT是"multithread, static version" 意思是多线程静态的版本,定义了它后,编译器把LIBCMT.lib安置到OBJ文件中,让链接器使用LIBCMT.li ...
分类:
其他好文 时间:
2017-09-07 00:04:49
阅读次数:
120
推荐: C语言中内存分配 Linux size命令和C程序的存储空间布局 本大神感觉,上面的链接的内容,已经很好的说明了; 总结一下: 对于一个可执行文件,在linux下可以使用 size命令列出目标文件各部分占的字节数;分为:text段、data段与bss段;(参考:Linux size命令和C程... ...
分类:
编程语言 时间:
2017-09-01 19:43:43
阅读次数:
202
动态分配的对象的生命期与它们在哪里创建的五官,只有显示地释放时,这些对象才被销毁 静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量,栈内存用来保存定义在函数内的非static对象,分配在静态内存或栈内存中的对象由编译器自动创建和销毁,static对象在使用前分 ...
分类:
其他好文 时间:
2017-08-30 18:23:05
阅读次数:
118
1.俩整数,不使用中间变量交换其值: 2.C++中俩string交换字符串 3.char*字符串交换值//不使用动态内存,执行1000w次耗时2s,使用动态内存耗时3s。 函数调用: 执行结果: ...
分类:
编程语言 时间:
2017-08-26 15:08:07
阅读次数:
194