首页 > 系统相关 >动态内存函数

动态内存函数

时间:2022-12-04 22:03:57浏览次数:35  
标签:p2 10 函数 int 动态内存 printf 空间 NULL

malloc

1开辟成功,返回一个指针

2开辟失败,返回NULL

3返回值是void*,需要强制转换

4size为0未定义。

int main()
{//向内存申请10个整形空间
int* p = (int *)malloc( sizeof(int));
if (p == NULL)
printf("%s\n", strerror(errno));
else
{
int i = 0;
for (i = 0; i < 10; i++)
{
p[i] = i;
printf("%d", p[i]);
}
}
//释放内存
free(p);
//将p的地址弄成0
p = NULL;
return 0;
}


free

1释放动态开辟的空间

2free(0)可以实现

colloc

1会初始化空间为0

int main()
{
int* p = (int*)calloc(10, sizeof(int));
if (p == NULL)
printf("%s\n", strerror(errno));
else
{
int i = 0;
for (i = 0; i < 10; i++)
{
p[i] = i;
printf("%d", *(p+i));
}
}
free(p);
p = NULL;
return 0;
}

realloc

1可以调整开辟空间

2返回void*,需要强制转换

注意:p指向的空间后面有足够的空间,直接申请足够的空间。返回p的地址

若没有足够的空间,释放旧的空间,拷贝数据,重新开辟新的空间。

int main()
{
int* p = (int*)malloc(5* sizeof(int));
if (p == NULL)
printf("%s\n", strerror(errno));
else
{
int i = 0;
for (i = 0; i < 5; i++)
{
p[i] = i;
}
}
//添加20个字节
int i = 0;
int* p2 = (int*)realloc(p, 40);
//防止扩大失败,改地址
//成功后二者地址相同
if (p2 != NULL)
p = p2;
for (i = 0; i < 10; i++)
{
if (i >= 5)
p2[i] = i;
printf("%d ", p2[i]);
}
free(p);
p = NULL;
return 0;
}

标签:p2,10,函数,int,动态内存,printf,空间,NULL
From: https://blog.51cto.com/u_15770447/5910079

相关文章

  • 【C语言】自定义一个模仿strlen()函数功能的函数
    自定义一个模仿strlen()函数功能的函数//my_strlen()函数声明,返回字符数组中字符的个数//参数为字符数组的地址intmy_strlen(char*str);intmain(void){ charch[......
  • 7.C++拷贝构造函数
    拷贝构造函数我们经常会用一个变量去初始化一个同类型的变量,那么对于自定义的类型也应该有类似的操作,那么创建对象时如何使用一个已经存在的对象去创建另一个与之相同的对......
  • 6.C++构造函数
    类的6个默认成员函数如果我们写了一个类,这个类我们只写了成员变量没有定义成员函数,那么这个类中就没有函数了吗?并不是的,在我们定义类时即使我们没有写任何成员函数,编译器......
  • 8.C++析构函数
    析构函数既然在创建对象时有构造函数(给成员初始化),那么在销毁对象时应该还有一个清除成员变量数据的操作咯。概念析构函数:与构造函数功能相反,析构函数不是完成对象的销......
  • STM32标准库函数记录
    GPIO示例初始化GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //LED0-->PB.5端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mo......
  • 《一些特殊的数论函数求和问题》阅读笔记
    好至少它教会了我如何把质数求和转化成积分的渐进对着\(\pi(x)\)微就行了然后直接\(u\textdv=uv-v\textdu\)18.3k……阿巴阿巴引言这玩意挺常见的。而且你会......
  • 16.【C语言进阶】动态内存管理
    为什么存在动态内存分配栈区上的内存开辟intval=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间这样直接在函数体中开辟内存......
  • 【221204-2】如图,抛物线y=x平方/2+mx+n与直线y=-x/2+3交于AB两点,与x轴的右交点为C,已知
    “胡不归”的典型案例之二。END......
  • 使用函数求解并输出阶乘值,输入n,输出n!值。
    #include<stdio.h>intsum(intn)//被调函数中进行计算{ inti,p=1; for(i=1;i<=n;i++) p=p*i; returnp;//返回函数值}intmain(){ ints,i,n; ......
  • PYTHON 函数
    1.1函数函数是可以反复执行的代码块,具有函数名,参数,返回值。1.2定义函数函数必须先定义后执行。def函数名(参数列表):函数体return返回值没的返回数据......