realloc 用法

参考文献:  http://blog.csdn.net/snlying/article/details/4005238

返回情况
:
返回的是一个void类型的指针,调用成功。(这就再你需要的时候进行强制类型转换) 
返回NULL,当需要扩展的大小(第二个参数)为0并且第一个参数不为NULL,此时原内存变成了“freed(游离)”的了。

realloc 并不保证调整后的内存空间和原来的内存空间保持同一内存地址。相反,realloc
返回的指针很可能指向一个新的地址。所以在代码中,我们必须将realloc返回的值,重新赋值给 p :
p =
(int *) realloc (p, sizeof(int) *15);

newbase = (ElemType *)realloc(L,elem,(L.listsize +
LISTINCREMENT)*sizeof(ElemType));

if(!newbase) exit(OVERFLOW); //存储分配失败

L.elem = newbase;              
 //新基址

L.listsize += LISTINCREMENT; //增加存储容量

realloc 用法,布布扣,bubuko.com

时间: 2024-10-12 13:09:47

realloc 用法的相关文章

【学习ios之路:C语言】存储区内存划分

一. 内存存储区的划分: 1.栈区:栈区主要存放函数内部定义的变量,数组.函数调用时,开辟空间,函数执行完毕,回收空间,空间的开辟与回收有系统管理. 2.堆区:堆区最大的特点:空间的开辟与释放有开发人员手动管理. 3.全局区静态区:主要存放函数外部定义的全局变量以及静态变量,空间一旦开辟,就不会回收.直到应用程序执行结束. 4.常量区:存储常量.1.整形常量.2.浮点型常量.3,字符串常量.4.字符串常量. 5.代码区:存放程序编译之后生成的cpu指令. 二.malloc,在堆区开辟空间. //

calloc、malloc、realloc函数的区别及用法

/* 需要手动计算内存大小,未初始化 */ int *p = (int *)malloc(20 * sizeof(int)); /* 不需要手动计算内存大小,初始化为0 */ int *q = (int *)calloc(20, sizeof(int)); /* 动态内存 扩大/缩小 * 1.成功分配: * 1.1 返回地址相同, 原内存后 有 空余内存,返回原来指针的地址: * 1.2 返回地址不同, 原内存后 没有 空余内存,新分配一块儿内存,并把原来的内存内容拷贝过来,原来的内存释放掉:

关于malloc和sizeof的用法

问题1: 1.L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); 2.newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); 其中L是已经定义的线性表,LIST_INIT_SIZE是线性表存储空间的初始分配量,listsize是当前分配的存储容量(以sizeof(ElemType)为单位) 解释: 第一个句子:用ma

C++:vector的用法详解(转载)

原文地址:http://blog.csdn.net/hancunai0017/article/details/7032383 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:

malloc与free函数用法

在C里,内存管理是通过专门的函数来实现.另外,为了兼容各种编程语言,操作系统提供的接口通常是 C 语言写成的函数声明 (Windows 本身也由C和汇编语言写成). 1 分配内存 malloc 函数 需要包含头文件: #include <stdlib.h> 函数声明(函数原型) void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类型.void* 表示未确定类型的指针.C,C++规定,void* 类型可以强制转

c realloc函数和malloc函数

realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include <stdlib.h> 有些编译器需要#include <alloc.h> 在C++环境中,使用#include<iostream> using namespace std;功能:改变mem_address所指内存区域的大小为newsize长度. 说明:如果重新分配成功则返回指向被分配内存的指针,否则返

_vsnprintf在可变参数打印中的用法

_vsnprintf,C语言库函数之一,属于可变参数.用于向字符串中打印数据.数据格式用户自定义. 函数简介 编辑 头文件: #include <stdarg.h> 函数声明: int _vsnprintf(char* str, size_t size, const char* format, va_list ap); 参数说明: char *str [out],把生成的格式化的字符串存放在这里. size_t size [in], str可接受的最大字符数[1]  (非字节数,UNICODE

c++中vector的用法详解

c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个

C++中 vector(容器)的用法

vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,