美文网首页
c语言重置内存大小

c语言重置内存大小

作者: 沙卡拉卡轻食吧 | 来源:发表于2018-11-25 22:02 被阅读0次

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

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

改变形参的值需要传递形参的指针,这个时候需要传递 指针的指针给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;

}

相关文章

  • c语言重置内存大小

    重置内存大小,相当于开辟一块新的内存 改变指针所指向的内存块。 也就是相当于 改变指针所指向的内容。 改变形参的值...

  • 2019-12-28【c#】Array.Resize(ref d

    数组重置内存大小

  • 2675字带你进阶C语言中的关键字

    C语言进阶之C语言关键字 基本数据类型 1.数据类型 数据类型可以理解为固定内存大小的别名(例如,在C语言中int...

  • C语言中的变量的表数范围和存储形式

    C语言中的数据类型 不同类型数据占用的内存大小不同 int 整型, C标准未规定, 系统相关目前大多数系统上占4个...

  • 失落的C语言结构体封装艺术!

    1. 谁该阅读这篇文章 本文是关于削减C语言程序内存占用空间的一项技术——为了减小内存大小而手工重新封装C结构体声...

  • C语言编程笔记丨失落的C语言结构体封装艺术

    1. 谁该阅读这篇文章 本文是关于削减C语言程序内存占用空间的一项技术——为了减小内存大小而手工重新封装C结构体声...

  • 空类的大小

    空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 c 这个结果输出是0,也就是说 c...

  • free 查看内存使用情况

    默认kb 修改单位为M total:物理内存大小,就是机器实际的内存 used:已使用的内存大小,这个值包括了 c...

  • C,C++内存分配

    C语言内存分配: 静态内存分配,分配内存大小的是固定,问题:1.很容易超出栈内存的最大值 2.为了防止内存不够用会...

  • NSObject 底层本质

    一、OC 转 C/C++ 二、NSObject 对象内存布局 三、NSObject 内存大小 四、OC 对象内存布...

网友评论

      本文标题:c语言重置内存大小

      本文链接:https://www.haomeiwen.com/subject/huumqqtx.html