C/C++分配内存空间
来源:互联网 发布:windows 98下载 编辑:程序博客网 时间:2024/05/16 06:56
【方法】C:malloc、calloc、realloc、free; C++:new、delete
【函数原型】:请求成功返回空间首地址,失败返回NULL
#include <stdlib.h>
void *malloc( size_t size ); //分配size字节的连续内存,不负责初始化,使用memset初始化。
void *calloc( size_t num, size_t size ); //分配num个size字节的连续内存,并初始化内存为0。
void *realloc(void* ptr, size_t size); //将已分配空间的指针ptr,重新申请地址为size字节长度。
void free( void *ptr ); //释放malloc、calloc、realloc的ptr地址空间,最后设置ptr = NULL;
void *memset( void *ptr, void cst, size_t size); //将ptr地址里size字节空间的值设置成cst。
memcpy、memmove、memcmp
size_tsizeof(object )返回对象所占的字节数:对象尽量是指针或变量,其次是类型。
【区别】
(1)malloc只负责分配大小,不负责初始化内存; calloc即分配内存大小,也初始化内存为0。
(2)malloc返回的是一个对象;calloc返回的是一个数组,适合为数组申请空间。
(3)realloc申请的size小于等于原先空间大小,则保持原状态;大于,则重新分配大小,并将原先内容复制到新空间,原先指针自动释放,但新分配的空间未初始化,需用memset初始化。
(4)C++中new/delete分配/释放空间并调用构造,都需成对出现。
【实例】
char *str = (char*)malloc( sizeof(char) * 100 );
memset( str, 0,sizeof(str) );
int *ip_a = (int *)calloc(5, sizeof(int) );
ip_a = (char *)realloc( ip_a,sizeof(int) * 40 );
- C/C++分配内存空间
- C++new分配内存空间
- C分配内存空间
- C/C++内存空间的分配
- C的编译器对内存空间的分配
- 【转】c语言动态与静态分配内存空间的区别
- c语言动态与静态分配内存空间的区别
- C中为动态数组连续分配内存空间
- C语言calloc()函数:分配内存空间并初始化
- C语言对指针形参分配内存空间
- C语言随机数和动态地分配内存空间
- C语言calloc()函数:分配内存空间并初始化
- c:动态分配内存空间
- c 中的动态分配内存空间
- 分配内存空间
- 分配内存空间
- 分配内存空间
- c/c++ 程序内存空间浅说
- C语言_统计本件中各长度字符串出现的次数
- Linux 下编译安装软件,找不到共享库 xx.so 的解决办法
- Effective Modern C++ 条款26 避免对通用引用进行重载
- 仿实例开发----一个简单的视频播放器
- oracle 新增表空间的几种方法
- C/C++分配内存空间
- NSMutableArray 排序以及NSComparator和NSSortOptions的解释说明
- DG日常维护管理
- a:link, a:visited, a:hover, a:active使用顺序
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
- JavaSE学习_05_static_gc
- this action could not be completed. Try again
- 使用高德地图Javascript API实现搜索的自动完成
- hdoj 2196 Computer 树形dp经典题