下面哪种C/C++ 分配内存的方法会将分配的空间初始化为0

A malloc()
B calloc()
C realloc()
D new[ ]

1) malloc 函数: void *malloc(unsigned int size)
在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。

2)calloc 函数: void *calloc(unsigned int num, unsigned int size)
按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。
calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。

3)realloc 函数: void *realloc(void *ptr, unsigned int size)
动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size。
申请的内存空间不会进行初始化。

4)new是动态分配内存的运算符,自动计算需要分配的空间,在分配类类型的内存空间时,同时调用类的构造函数,对内存空间进行初始化,即完成类的初始化工作。动态分配内置类型是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化。

这里仅针对new[]说明一下。

#include <iostream>
#include <cstring>using  namespace std;class A {
public:int a;static  int b;
};
int A::b;
int main(int argc ,char* argv[])
{A *test = new A;cout << test->a << endl << test->b << endl<< endl;int *a = new int[4];for (int i = 0; i < 4; ++i)cout << *a++ << ' ';return 0;
}

我们看看输出:

选项D,是new数组的形式。new[](new的数组版)要求元素对象的类型必须具有默认构造函数(内建类型的“默认构造函数”是什么也不做),否则将不能使用new[]。
不过,C++11中已经不提倡用c array。更多的是用vector代替

常用内存分配函数的说明相关推荐

  1. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  2. Linux内核中内存分配函数

    1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...

  3. 替换libc中的内存分配函数

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文介绍如何替换glibc中的内存分配函数为自定义的内存分配函数的方法,可以方便调试内存分配,和查找内存管理错误而产生 ...

  4. 【C/C++】内存分配函数:malloc,calloc,realloc,_alloca

    [C/C++]内存分配函数:malloc,calloc,realloc,_alloca malloc: 原型:extern void *malloc(unsigned int num_bytes); ...

  5. 内存分配函数 ExAllocatePool ExAllocatePoolWithTag

    如同C里面的malloc一样,内核模式下的ExAllocatePool也是非常重要的.但是一说到ExAllocatePool函数就不得不提ExAllocatePoolWithTag函数.对比一下两个函 ...

  6. 内存分配函数 malloc、realloc、calloc

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1) malloc 函数原型如下: void * m ...

  7. linux内核函数kmalloc,Linux_Linux平台上几个常见内核内存分配函数,* kmallocPrototype:#incl - phpStudy...

    Linux平台上几个常见内核内存分配函数 * kmalloc Prototype: #include void *kmalloc(size_t size, int flags); Kmalloc分配一 ...

  8. c语言字符指针分配内存,内存分配函数及使用注意事项,C语言内存分配函数完全攻略...

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1)malloc 函数原型如下: void * ma ...

  9. C语言动态内存管理和动态内存分配函数

    给变量分配内存空间可分为静态内存分配和动态内存分配. 静态内存分配属于编译时给变量分配的空间,动态分配属于在程序运行时给变量分配的空间 静态分配属于栈分配,动态分配属于堆分配 运行效率上,静态内存比动 ...

最新文章

  1. 你的微服务实践还顺利吗?
  2. 大话设计模式读书笔记11----建造者模式(Builder)
  3. 常见HTTP状态码列表
  4. Nginx搭建部署Web服务器并与NFS结合搭建负载均衡服务器
  5. “约见”面试官系列之常见面试题之第五十四篇之语义化标签(建议收藏)
  6. 【更新】火星人敏捷开发手册 2011-12-31
  7. php中的全局变量$GLOBALS与global的区别
  8. 会考计算机操作题知识点,江西省信息技术会考操作题知识要点汇总
  9. 随便说说,我回来啦~
  10. 使用aiop实现事件等待模式
  11. 为网站配置免费的HTTPS证书 4-4
  12. msapro-note
  13. linux csgo 是英文,linux csgo服务器
  14. mysql查询表的内容_mysql查询表内容
  15. 在Python中使用OpenCV进行直线检测
  16. 矩阵连乘C语言递归实现
  17. C#使用Julia语言
  18. 基于SaaS平台的iHRM项目的后端部署教程
  19. 第八章 内存共享 windows程序设计王艳平版
  20. openmv 图像一维数组_第N维数组和图像处理。

热门文章

  1. STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz
  2. element弹框的的this.$alert、this.$prompt方法用法
  3. java rgb转yuv_【转】总结各种RGB转YUV的转换公式
  4. element中select默认选中第一个_探索在网页中使用“标注”
  5. 儿童学文字编程python_手把手教你python数字知识
  6. cefsharp System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。...
  7. 查看SELinux状态
  8. NOIP2007 count 统计数字
  9. 自己定义ViewGroup控件(一)-----gt;流式布局进阶(一)
  10. jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。s:a actions:iterators:paramognl表达式...