从0开始<十四>:模仿malloc和 free函数、strlen函数[通俗易懂]

程序一:编写函数char*alloc(n)和voidafree(char*p)函数,这两个函数类似于malloc和free函数,其中第一个函数返回一个指向n个连续存储单元的指针,第二个函数释放已经分配单元的指针。思路:最容易实现方法是让一个大字符数组allocbuf中的空间进行分配。该数组是alloc和afree两个函数的私有数组。由于函数alloc和afree处理的对象时指针而不是

大家好,又见面了,我是你们的朋友全栈君。

程序一:编写函数char *alloc(n) 和 void afree(char *p)函数,这两个函数类似于malloc和free函数,其中第一个函数返回一个指向n个连续存储单元的指针,第二个函数释放已经分配单元的指针。

思路:最容易实现方法是让一个大字符数组allocbuf中的空间进行分配。该数组是alloc和afree两个函数的私有数组。由于函数alloc和afree处理的对象时指针而不是数组下标,因此,其他函数无需知道该数组的名字,这样,可以在包含alloc和afree的源文件中对该数组声明为static类型,使得它不对外可见。如下图:


#define ALLOCSIZE 10000 /*可用空间大小*/

static char allocbuf[ALLOCSIZE];  /*alloc使用的存储区*/
static char *allocp = allocbuf; /*下一个空闲位置*/

char *alloc(int n) /*返回指向n个字符的指针*/
{
	if (allocbuf + ALLOCSIZE - allocp >= n)
	{
		allocp += n;
		return allocp-n;
	}
	else
		return 0;
}

void afree(char *p)
{
	if (p>=allocbuf && p<allocbuf+ALLOCSIZE)
		allocp = p;
}

程序二:strlen函数

int strlen(char *s)
{
	char *p = s;
	while (*p++);
	
	return p - s - 1;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127563.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月9日 下午11:20
下一篇 2022年4月9日 下午11:40


相关推荐

  • pycharm安装tensorflow版本无法找到_pycharm安装后无解释器

    pycharm安装tensorflow版本无法找到_pycharm安装后无解释器1、TensorFlow安装keras需要在TensorFlow之上才能运行。所以这里安装TensorFlow。TensorFlow需要vs环境,需要wein64位环境,所以32位的小伙伴需要升级为64位系统以后才行。(1)第一种方式使用pip安装如果只想专用cpu加速,安装pipinstall–upgradetensorflow如果想使用gpu加速,还需要安装pipinstall–upgradetensorflow-gpu安装以后还需要cuda显卡驱动,可参考https://

    2022年8月25日
    8
  • Git可视化教程——Git Gui的使用[通俗易懂]

    Git可视化教程——GitGui的使用

    2022年4月12日
    1.0K
  • 浅谈VMware的NAT模式「建议收藏」

    浅谈VMware的NAT模式「建议收藏」什么是NAT模式?理论化的措辞我就不说了,我将结合本人平时的经验来简单的说明一下NAT模式,以及配置NAT模式时遇到的问题。大家都知道,我们的电脑要想联网,需要与交换机连接,假设交换机的网关为192.168.1.1,那么我们的电脑的ip必定在相同的网段,比如192.168.1.101,网关必定是192.168.1.1。现在我们向通过NAT模式将主机与虚拟机连接起来,即主机可以ping的通虚拟机…

    2022年6月16日
    32
  • wp-login.php 404页面,wordpress404页面制作完整的正确操作流程

    wp-login.php 404页面,wordpress404页面制作完整的正确操作流程近期,看到很多SEO站长在我网站留言:为什么wordpress无法跳转正确的404页面或者404页面未找到?小L一查资料,看到搜索引擎出现的结果,有些很难让人操作和理解。于是,L氪迹SEO技术教程学习网在这里以图文形式来分享一下wordpress404页面制作完整的正确操作流程。【1、404页面模板下载】操作概述:小L在这里教大家较简单的方法,让你快速上线设置好404页面。打开你喜欢的网站的404…

    2022年7月27日
    17
  • 向量的内积和叉积_点乘和叉乘的区别

    向量的内积和叉积_点乘和叉乘的区别向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。点乘公式对于向量a和向量b:

    2026年3月10日
    5
  • matlab之griddata函数

    matlab之griddata函数griddata函数

    2022年5月25日
    255

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号