⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmemalign.c

📁 早期freebsd实现
💻 C
字号:
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.This file is part of the GNU C Library.The GNU C Library is free software; you can redistribute it and/ormodify it under the terms of the GNU Library General Public License aspublished by the Free Software Foundation; either version 2 of theLicense, or (at your option) any later version.The GNU C Library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULibrary General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with the GNU C Library; see the file COPYING.LIB.  Ifnot, write to the Free Software Foundation, Inc., 675 Mass Ave,Cambridge, MA 02139, USA.  */#include "mmalloc.h"PTRmmemalign (md, alignment, size)  PTR md;  size_t alignment;  size_t size;{  PTR result;  unsigned long int adj;  struct alignlist *l;  struct mdesc *mdp;  size = ((size + alignment - 1) / alignment) * alignment;  if ((result = mmalloc (md, size)) != NULL)    {      adj = RESIDUAL (result, alignment);      if (adj != 0)	{	  mdp = MD_TO_MDP (md);	  for (l = mdp -> aligned_blocks; l != NULL; l = l -> next)	    {	      if (l -> aligned == NULL)		{		  /* This slot is free.  Use it.  */		  break;		}	    }	  if (l == NULL)	    {	      l = (struct alignlist *) mmalloc (md, sizeof (struct alignlist));	      if (l == NULL)		{		  mfree (md, result);		  return (NULL);		}	    }	  l -> exact = result;	  result = l -> aligned = (char *) result + alignment - adj;	  l -> next = mdp -> aligned_blocks;	  mdp -> aligned_blocks = l;	}    }  return (result);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -