c语言重置内存大小

重置内存大小,相当于开辟一块新的内存 改变指针所指向的内存块。

也就是相当于 改变指针所指向的内容。

改变形参的值需要传递形参的指针,这个时候需要传递 指针的指针给reset函数。

然后通过*p = 新的内存地址值。来改变内存。

//1.开辟新的内存块

//2.将旧内存块的值一一赋值给新内存块

//3.释放旧内存

//4.让旧内存块的指针指向新的内存块

#include <stdio.h>

#include <malloc.h>

int reset(char**p, int size, int new_size)

{

    int ret = 1;

    int i = 0;

    int len = 0;

    char* pt = NULL;

    char* tmp = NULL;

    char* pp = *p;


    if( (p != NULL) && (new_size > 0) )

    {

        pt = (char*)malloc(new_size);


        tmp = pt;


        len = (size < new_size) ? size : new_size;


        for(i=0; i<len; i++)

        {

            *tmp++ = *pp++;     

        }


        free(*p);

        *p = pt;

    }

    else

    {

        ret = 0;

    }


    return ret;

}

int main()

{

    char* p = (char*)malloc(5);


    printf("%p\n", p);


    if( reset(&p, 5, 3) )

    {

        printf("%p\n", p);

    }

    free(p);


    return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,628评论 2 23
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,193评论 0 2
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 9,683评论 0 45
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,013评论 0 7
  • 文/落篱子 -1- 三年前,我是一名售楼员,李维是我的客户。 2015年12月,我在一个朋友的婚礼上,认识了李维。...
    落篱子阅读 19,541评论 20 56