动态分配内存-realloc
动态分配内存---relloc
关于 malloc 就不多说了,现在看看 realloc:
函数声明: void *realloc(void *ptr, size_t size);
功能:动态改变指针指向的内存块的大小。
使用:如果 ptr 指针是空指针,该函数的作用同 malloc;
如果 size 的大小小于之前 malloc或 realloc 分配的大小,那么原来内存块的数据会丢失,只保留现有数据;
如果 size 的大小大于之前 malloc或 realloc 分配的大小,那么将会分配一块新的大小的内存块。
新的内存块将会复制原来内存块的数据,原来的内存块会被释放。
DemoCode:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a,*p;
int i=,j=;
char b;
p = (int *)malloc(sizeof(int));
printf("原来指针指向地址:%p\n",p);
while()
{
scanf("%d%c",&a,&b);
p[i] = a;
if(b != '\n')
{
i++,j=i;
p = (int *)realloc(p,sizeof(int)*(i+));
}
else
break;
}
printf("新指针指向地址:%p\n",p);
for(i=;i<=j;i++)
printf("%d\t",p[i]);
printf("\n");
free(p);
return ;
}
这样就可以根据需要来使用内存了。
动态分配内存-realloc的更多相关文章
- c/c++动态分配内存和malloc的使用
c/c++动态分配内存 为什么需要动态分配内存 ---很好的解决的了传统数组的4个缺陷 动态内存分配举例 ---动态数组的构造 使用动态数组的优点: 1. 动态数组长度不需要事先给定: 2. ...
- 标C编程笔记day06 动态分配内存、函数指针、可变长度參数
动态分配内存:头文件 stdlib.h malloc:分配内存 calloc:分配内存,并清零 realloc:调整已分配的内存块大小 演示样例: in ...
- 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域
[源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...
- C++动态分配内存
动态分配(Dynamic Memory)内存是指在程序运行时(runtime)根据用户输入的需要来分配相应的内存空间. 1.内存分配操作符new 和 new[] Example: (1)给单个元素动态 ...
- C&C++动态分配内存(手动分配内存)三种方式
1. malloc函数 函数原型:void *malloc(unsigned int size)函数的作用是:在内训的动态存储区开辟一个size个字节的连续空间,返回所分配区域的首字节地址. 可以看到 ...
- mfc 动态分配内存
动态内存分配new 为数组动态分配内存 为多维数组分配内存 释放内存delete malloc free 动态内存分配new int * pi; pi= new int ; 为 ...
- 【c++习题】【17/4/16】动态分配内存
#include<iostream> #include<cstring> #define N 100 using namespace std; class String{ pu ...
- 指针和动态分配内存 (不定长度数组)------新标准c++程序设计
背景: 数组的长度是定义好的,在整个程序中固定不变.c++不允许定义元素个数不确定的数组.例如: int n; int a[n]; //这种定义是不允许的 但是在实际编程中,往往会出现要处理的数据数量 ...
- 数据结构复习之C语言malloc()动态分配内存概述
#include <stdio.h> #include <malloc.h> int main(void) { ] = {, , , , }; // 计算数组元素个数 ]); ...
随机推荐
- BASK、BFSK、BPSK调制方法的Matlab程序实现
%以下为手动编程方法,也可调用matlab集成函数dmod,具体调制方式见doc. n = [0:0.01:5.99]; x1 = ones(1,100); x2 = zeros(1,100); x3 ...
- 疑难杂症----udf提权无法导出.dll
昨天进行测试一个网站,进行udf提权时候,没办法导出.dll, 起初以为是这个马的问题,后来用专用马,一样不行,但是有报错了,有上网找了半天,终于被我找到了. Mysql数据库从文件导入或导出到文件, ...
- Nginx 日志文件 access_log详解及日志分割
Module ngx_http_log_module nginx 日志相关指令主要有两条, 一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径.格 ...
- 10 (OC)* Coretext
CoreText实现 看上图,我们可以知道,一个View包括CTFrame,CTFrame中间包括许多行CTLine,而一个CTLine中包括许多CTRun 我们主要说说CTLine和CTRun ...
- Python3.7.4入门-0/1To Begin/数据类型与结构
0 To Begin //:向下取整除法 **:乘方 在交互模式下,上一次打印出来的表达式被赋值给变量 _ 如果不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即 ...
- React学习笔记(持续更新)
2.2页面加载过程 1.资源加载过程:URL->DNS查询->资源请求->浏览器解析 ①URL结构:http://www.hhh.com:80/getdata?pid=1#title ...
- 关于WinForm TreeView的分享~
最近在写个测试demo的时候使用到WinForm TreeView,已经好久没接触了,有些生疏,所以还是记录一下遇到的一些问题. 1.如果动态绑定TreeView,这个功能一般会在数据量不确定,需要去 ...
- 在Docker中启动Cloudera
写在前面 记录一下,一个简单的cloudera处理平台的构建过程和一些基本组件的使用 前置说明 需要一台安装有Docker的机器 docker常用命令: docker ps docker ps -a ...
- Jmeter日记,很乱很随意
这个笔记是写给自己看的,很乱很随意,可能以后自己都看不懂.哈哈 Jmeter两种录制方式: 1使用badboy 2.使用代理 浏览器设置代理 参数化 随机参数化 插件的使用 官网下载和说明https: ...
- mybatis 启用延迟加载和按需加载配置
启用延迟加载和按需加载 Mybatis配置文件中通过两个属性lazyLoadingEnabled和aggressiveLazyLoading来控制延迟加载和按需加载. lazyLoadingEnabl ...