C++动态内存分配学习笔记六

C++动态内存分配学习笔记六
"操作符new和new[]
形式为:pointer = new type 或者 pointer = new type [elements]"
"动态内存分配通常是由操作系统控制,内存有可能被用光,这种情况如果发生,操作系统将不能在遇到new时分配所需内存,返回无效指针。因此建议使用new后座检查。
例如:
int * bobby;
bobby = new int [5];
if (bobby == NULL) {
// error assigning memory. Take measures.
}"
删除操作符delete
形式为:delete pointer 或 delete [] pointer
"函数malloc:给指针分配内存的通用函数,原型是:void * malloc (size_t nbytes);
nbytes是我们想要给指针分配的内存字节数。返回一个void*类型的指针,需要用类型转换处理。
例如:
char * ronny;
ronny = (char *) malloc (10);
这个例子将一个指向10个字节可用空间的指针赋给ronny。"
"函数calloc:原型:void * calloc (size_t nelements, size_t size);
这两个参数相乘被用来计算所需内存块的总长度。通常第一个参数(nelements)是元素的个数,第二个参数 (size) 被用来表示每个元素的长度。
例如:
int * bobby;
bobby = (int *) calloc (5, sizeof(int));
malloc 和calloc的另一点不同在于calloc 会将所有的元素初始化为0。"
"函数realloc:用来改变已经被分配给一个指针的内存的长度。原型:void * realloc (void * pointer,size_t size);
参数pointer 用来传递一个已经被分配内存的指针或一个空指针,而参数size 用来指明新的内存长度。"
"函数free:这个函数用来释放被前面malloc, calloc 或realloc所分配的内存块。原型:void free (void * pointer);
注意:这个函数只能被用来释放由函数malloc, calloc 和realloc所分配的空间。"

你可能感兴趣的:(学习笔记)