[C语言] 使用数组模拟实现malloc

 代码如下, 只能模拟实现malloc但是无法实现free, 这里只是随便写写如果是只使用一次这么写也对.

为什么使用longlong类型强转, 因为在VC编译器中, longlong类型是8个字节, 64位电脑内存地址也是8字节, 只能用这个来进行运算, 如果是32位机器, 那么使用int就行了.

#define _CRT_SECURE_NO_WARNINGS

/*
    使用数组模拟实现堆开辟空间
*/

#include <stdio.h>
#define NULL 0

char heap_buf[1024]; //堆区大小
void* blockedPos = heap_buf; //堆区空闲指针

void* my_malloc(unsigned char size)
{
    void* pret = blockedPos;
    if ((long long)blockedPos + size >= &heap_buf + 1)
    {
        return NULL;
    }
    blockedPos = (long long)blockedPos + size;
    return pret;
}

void my_free(void* pos)
{
    blockedPos = pos;
}

void arrInput(int data[])
{
    for (int i = 0; i < 10; i++)
    {
        data[i] = i;
    }
}

//打印数组
void arrOutput(int data[])
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", data[i]);
    }
}

int main(void)
{
    int* ptemp = (int*)my_malloc(10);
    if (ptemp == NULL)
        return 1;

    arrInput(ptemp);
    arrOutput(ptemp);

    my_free(ptemp);

    return 0;
}

相关推荐

  1. [C语言] 使用数组模拟实现malloc

    2023-12-17 23:54:04       34 阅读
  2. Android malloc_debug实现原理及使用

    2023-12-17 23:54:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 23:54:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 23:54:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 23:54:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 23:54:04       20 阅读

热门阅读

  1. alibaba fastjson GET List传参 和 接收解析

    2023-12-17 23:54:04       37 阅读
  2. [Unity] 基于迭代器的协程底层原理详解

    2023-12-17 23:54:04       43 阅读
  3. C语言——谁考了第k名(编程题目)

    2023-12-17 23:54:04       37 阅读
  4. 从零开始搭建Go语言开发环境

    2023-12-17 23:54:04       41 阅读
  5. gdb print,gdb x和gdb display的使用

    2023-12-17 23:54:04       50 阅读
  6. Spring Boot注解说明

    2023-12-17 23:54:04       34 阅读
  7. 【.Net 6.0--通用帮助类--ConvertHelper】

    2023-12-17 23:54:04       32 阅读