C++ 中的动态内存分配:

  C++与C语言分配内存关键字不同,C语言中的动态内存分配是通过 malloc(分配内存) 与 free(释放内存)完成。C++使用new(分配内存)  delete(释放内存)。

  C++与C语言分配内存方式不同,C语言是以字节进行内存分配,C++是以类型进行内存分配。

  C++申请内存方法:    

变量申请内存:
type *name = new type;
delete name; 数组申请内存:
type *name = new type[N];
delete[] name; 带初始化的内存分配:
type *name = new type(val);//val 初始值

  C语言申请内存方法: 

int *p;
p = (int *)malloc(sizeof(int)*N);
free(p);

  实验代码:  

#include <stdio.h>

int main(int argc, char *argv[])
{
int *pi = new int();
char *Pc = new char('c');
int *p = new int[];
printf("Begin...\n");
printf("*pi = %d\n",*pi);
printf("*pc = %c\n",*Pc);
for(int i = ;i< ; i++)
{
p[i] = i;
printf("p[%d] = %d\n",i,p[i]);
}
printf("End...\n");
delete pi;
delete Pc;
delete[] p;
return ;
}

  new关键字与malloc函数的区别:

  new 是C++的一部分,malloc是由C库提供的

  new是以具体类型为单位进行内存分配,malloc是以字节为单位进行内存分配。

  new在申请单个类型变量的时候可以进行初始化,malloc不具备这种特性。

  C++ 的命名空间 namespace:

  在C语言中只有一个全局作用域,这样可能发生标识符之间的冲突。

  C++可以将全局作用域分成不同的部分,不同命名空间的标识符可以同名不会发生冲突。命名空间可以嵌套。全局作用域也叫作默认的命名空间。  

C++ 命名空间定义:
namespace
{
namespace
{
/**/
}
/**/
}

  

 测试代码:

  

#include <stdio.h>

int main(int argc, char *argv[])
{
int *pi = new int();
char *Pc = new char('c');
int *p = new int[];
printf("Begin...\n");
printf("*pi = %d\n",*pi);
printf("*pc = %c\n",*Pc);
for(int i = ;i< ; i++)
{
p[i] = i;
printf("p[%d] = %d\n",i,p[i]);
}
printf("End...\n");
delete pi;
delete Pc;
delete[] p;
return ;
} #include <stdio.h> namespace Frist
{
int i = ;
} namespace seconde
{
int i=;
namespace thirdly
{
struct p
{
int x;
int y;
};
}
} int main(int argc, char *argv[])
{
using namespace Frist; //使用 Frist整个命名空间
using seconde::thirdly::p;//使用seconde 命名空间中的 thirdly命名空间中的 结构体p
printf("Begin...\n");
printf("Frist::i = %d\n",i);//直接使用 Frist 中的变量i
printf("seconde::i = %d\n",seconde::i);//使用seconde命名空间中的变量i 注意如果同时使用Frist 与seconde整个命名空间就不能直接使用变量i
p thirdly_p ={,};//初始化 seconde 命名空间中的 thirdly命名空间中的 结构体p
printf("p.x = %d\n",thirdly_p.x);//直接使用 thirdly_p.x
printf("p.y = %d\n",thirdly_p.y);
printf("End...\n"); return ;
}

运行结果:  

Begin...
Frist::i =
seconde::i =
p.x =
p.y =
End...

最新文章

  1. OpenResty(nginx+lua) 入门
  2. r8 - ASC 41(俄罗斯多校)
  3. SQL2005中的事务与锁定(六) - 转载
  4. 【shell】条件判断式
  5. 反编译android APK
  6. DOM笔记(六):怎么进行JQuery扩展?
  7. VS编译出现 HTTP 错误 403.14 - Forbidden 决绝办法
  8. Google Map API 学习四
  9. java_设计模式_工厂模式_Factory Pattern(2016-08-04)
  10. intent.setFlags方法中参数值的含义
  11. PHP 汉字转拼音(首拼音,所有拼音)
  12. 数据库分库分表(sharding)系列(二) 全局主键生成策略
  13. Struts 框架 之 文件上传下载案例
  14. Go语言Map的使用
  15. python入门之函数
  16. 123. 单词搜索(DFS)
  17. Centos Linux 下Pycharm 安装
  18. 只需十四步:从零开始掌握 Python 机器学习(附资源)
  19. Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)
  20. Codeforces 338 D. GCD Table

热门文章

  1. Unity3D_(游戏)甜品消消乐03_游戏UI设计
  2. 【Share Code | Javascript &amp; HTML &amp; CSS】链接悬停显示图像效果
  3. Java连接MQTT服务-wss方式
  4. TCP定时器 之 延迟确认定时器
  5. redis深度历险:核心原理与应用实践--笔记
  6. java工程打成jar包 - 使用maven assembly插件打包及手动打包
  7. Jquery退出循环
  8. Xmanager power suit 6 最新版注册激活附注册机
  9. 调整Linux终端显示分辨率
  10. UEditor富文本编辑器时,插入图片没有任何反应