memset等动态内存管理函数举例

简介: 动态内存管理以mem开头的函数,初始化内存空间memset–使用一个常量字节填充内存空间

动态内存管理

以mem开头的函数,初始化内存空间

memset–使用一个常量字节填充内存空间

memcpy–拷贝内存空间

memmove–拷贝内存空间

menchr–在内存空间中搜索一个字符

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
int main()
{
  int *ptr = NULL;
  int i;
  ptr = (int *)malloc(N * sizeof(int));
  if(ptr == NULL)//申请内存失败会退出,一般不会失败
  {
    exit(1);
    }
    memset(ptr,0,N * sizeof(int));//初始化申请的内存,第一个为标志位,第二个为初始化的内容,第三个为初始化内存的大小
    for(i = 0; i< N; i++)
    {
      printf("%d",ptr[i]);
    }
    putchar('\n');
    free(ptr);
    return 0;
}

输出

十个0

calloc 函数与malloc函数的一个重要区别

1、calloc函数在申请完内存后,自动初始化该内存空间为零

2、malloc函数不进行初始化操作,里面数据是随机的

**


内存拷贝

**

memcpy

例:

memcpy(ptr2,ptr1,10);//将ptr1内存数据拷贝到ptr2中,大小为10


智能申请动态内存的函数


realloc


下面举例:输入任意个数,直到输入-1才停止并打印出以上输入的数

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int i,num;
  int count = 0;
  int *ptr = NULL;、//注意这里必须初始化为NULL
    do
  {
    printf("请输入一个整数(输入-1表示结束)");
    scanf("%d",&num);
    count++;
        ptr = (int *)realloc(ptr, count * sizeof(int));
        if (ptr == NULL)
        {
      exit(1);
        }
        ptr[count-1] = num;
    } while(num != -1);
    printf("输入的整数分别是 :");
    for (i = 0; i < count; i++)
    {
    printf("%d",ptr[i]);
    putchar('\n');
    free(ptr);
    return 0;
}



相关文章
|
18天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
29 0
|
29天前
|
编译器 C语言 C++
【C语言】memset()函数(内存块初始化函数)
【C语言】memset()函数(内存块初始化函数)
27 0
|
29天前
|
编译器 C语言 C++
【C语言】memcpy()函数(内存块拷贝函数)
【C语言】memcpy()函数(内存块拷贝函数)
42 0
|
1月前
|
C语言
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
|
1月前
|
算法 C语言
C语言中的内存函数你知道多少呢?
C语言中的内存函数你知道多少呢?
|
1月前
|
编译器 C语言
【C语言】动态内存函数介绍
【C语言】动态内存函数介绍
|
1月前
|
C语言
C语言里面的内存函数
C语言里面的内存函数
15 0
|
1月前
|
C语言
c语言内存函数的深度解析
c语言内存函数的深度解析
32 3
|
3天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)