c语言中动态内存管理(1)

简介: c语言中动态内存管理(1)

1.为什么会存在动态内存分配

int arr[1000];

image.png

2. 要学习动态内存开辟,就要了解内存中的三个区

image.png

这些函数都包含在:

#include<stdlib.h>

image.png


上代码

int main()
{
  //int arr[10];
  int*p = (int*)malloc(100 * sizeof(int));//开辟10个整形空间,有可能会开辟失败
  if (p == NULL)
  {
    printf("malloc error");
    return;
  }
  //可以使用
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    *(p + i)=i;
  }
  for (i = 0; i < 10; i++)
  {
    printf("%d", p[i]);
  }
  //回收空间用free
  free(p);
  p = NULL;//用完把他做成空指针
  return 0;
}

image.png

上代码

int main()
{
  /*int *p = (int *)malloc(40);*/
  int *p = calloc(10, sizeof(int));//会初始化为0,但参数不一样,其他都一样
  if (p == NULL)
  {
    printf("错误");
  }
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    printf("%d", *(p + i));
  }
return 0;
}

image.png

int main()
{
  /*int *p = (int *)malloc(40);*/
  int *p = calloc(10, sizeof(int));//会初始化为0,但参数不一样,其他都一样
  if (p == NULL)
  {
    printf("错误");
  }
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    printf("%d", *(p + i));
  }
  if (ptr != NULL)
  {
    p = ptr;
  }
  free(p);
  p = NULL;
  return 0;
}

realloc实现会出现两种情况

image.png

相关文章
|
13天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
24 0
|
24天前
|
编译器 C语言 C++
【C语言】memset()函数(内存块初始化函数)
【C语言】memset()函数(内存块初始化函数)
26 0
|
24天前
|
编译器 C语言 C++
【C语言】memcpy()函数(内存块拷贝函数)
【C语言】memcpy()函数(内存块拷贝函数)
42 0
|
1月前
|
存储 C语言
c语言中动态内存分配
c语言中动态内存分配
10 0
|
15天前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
28 0
|
24天前
|
编译器 C语言 C++
【C语言】calloc()函数详解(动态内存开辟函数)
【C语言】calloc()函数详解(动态内存开辟函数)
25 0
|
24天前
|
存储 编译器 程序员
【C语言】内存的动态分配与释放
【C语言】内存的动态分配与释放
27 0
|
24天前
|
存储 前端开发 编译器
【C语言】memmove()函数(拷贝重叠内存块函数详解)
【C语言】memmove()函数(拷贝重叠内存块函数详解)
32 1
|
25天前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
15 0
|
1月前
|
存储 安全 程序员
C语言内存管理
C语言内存管理
14 0