zoukankan      html  css  js  c++  java
  • C语言增量内存申请 realloc

    void* realloc (void* ptr, size_t size);
    Reallocate memory block

    Changes the size of the memory block pointed to by ptr.
    The function may move the memory block to a new location (whose address is returned by the function).

    The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location. If the new size is larger, the value of the newly allocated portion is indeterminate.

    【如果申请长度小于原来长度,原来内容被截断;等于则内容不变,如果申请长度大于原来长度,多出部分的内存,其内容是不确定的,原来内容不变】

    【但不管哪种情况,内存地址都可能改变,相等情况下可能不变】

    In case that ptr is a null pointer, the function behaves like malloc, assigning a new block of size bytes and returning a pointer to its beginning.

    【如果ptr是空,则此时函数相当于malloc的功能】

     代码如下:

     1 /* realloc example: rememb-o-matic */
     2 #include <stdio.h>      /* printf, scanf, puts */
     3 #include <stdlib.h>     /* realloc, free, exit, NULL */
     4 
     5 int main ()
     6 {
     7   int input,n;
     8   int count = 0;
     9   int* numbers = NULL;
    10   int* more_numbers = NULL;
    11 
    12   do {
    13      printf ("Enter an integer value (0 to end): ");
    14      scanf ("%d", &input);
    15      count++;
    16 
    17      more_numbers = (int*) realloc (numbers, count * sizeof(int));
    18 
    19      if (more_numbers!=NULL) {
    20        numbers=more_numbers;
    21        numbers[count-1]=input;
    22      }
    23      else {
    24        free (numbers);
    25        puts ("Error (re)allocating memory");
    26        exit (1);
    27      }
    28   } while (input!=0);
    29 
    30   printf ("Numbers entered: ");
    31   for (n=0;n<count;n++) printf ("%d ",numbers[n]);
    32   free (numbers);
    33 
    34   return 0;
    View Code
  • 相关阅读:
    WeihanLi.Npoi 1.10.0 更新日志
    消除代码中的坏味道,编写高质量代码
    代码重构之法——方法重构分析
    使用 C# 捕获进程输出
    .net core 中的经典设计模式的应用
    JDBC 规范中文版 4.2 -第一章 简介
    基础回顾-线程的几种状态
    一文读懂BeanFactory和FactoryBean区别
    阿里云云计算ACA 第三章 阿里云存储服务
    阿里云云计算ACA 第二章 阿里云弹性计算
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/8436467.html
Copyright © 2011-2022 走看看