c语言程序中开辟空间#includestdio.h
#includestdlib.h
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
LinkList Init()
{
LinkList L = NULL;
printf("%d ",L);
L=(LinkList)malloc(sizeof(Lnode));
printf("%d ",L);
L-next=0;
return L;
}
void main()
{
LinkList A = NULL;
printf("%d ",A);
A = Init();
}
求助:用C语言指针编写一个函数alloc(n) 在内存区开辟和释放一个连续空间分类:电脑/网络程序设计其他编程语言
问题描述:
求助:用C语言指针编写一个函数alloc(n) ,用来在内存区开辟一个连续的空间(n个字节) 。此函数的返回值是一个指针,只想新开辟的连续空间的起始地址 。再写一个函数free(p),将起始地址p开始的各单元释放(不能再被程序使用,除非再度开辟) 。提示:现在内存区定出一片相当大的连续空间(如1000字节) 。然后开辟与释放都在此空间进行 。假设指针变量p原已指向未用空间的开头,调用alloc(n)后,开辟了n个字节可供程序适使用 。现在需要使 p的值变为p n,表示空白未用区从p n地址开始,同时要将开辟区的起始地址(p)作为函数值返回,以表示可以利用从此点开始的单元 。如果要开辟的区太大(n大),超过了预想的(1000)字符,则alloc(n)函数返回指针NULL,表示开辟失败 。本人新学C 高手帮帮忙 谢谢~!
解析:
char _gacMemBlk[1000];
char * _gpcMemBlkBgn = _gacMemBlk;
int _giPos = 0;
void * alloc(int n)
{
if (1000 - _giPosn)
return NULL;
char * p = _gpcMemBlkBgn_giPos;
_giPos= n;
return (void *)p;
}
void free(void * p)
{
}
注:alloc, free不像你描述的那么简单,其实每次分配还要用一个连表记录下来其位置和大?。看畏峙洳灰欢ㄒ幽┪部挤?nbsp;, 而是在连表中找一块空白的,分一砣,剩下的又是一块插到连表中,而释放的时候,如果前后更好挨着,则需要合并
c语言中怎么用malloc()函数开辟用于存放char型的指针的空间?char*pc=(char*)malloc(10);
在内存中申请10个char大小的存储空间 , 并将存储空间的首地址放于变量pc中 。
记得不要忘记类型转换 。
C语言 指针编写一个函数alloc(n) 在内存区开辟和释放一个连续空间#include stdio.h
#define LEN (1000)
unsigned char base[LEN];
unsigned char *p=(unsigned char *)base;
void *Alloc(unsigned int n)
{
unsigned char *pp=p;
if(p sizeof(unsigned int) nbase LENn0)
{
*(unsigned int*)p=n;
p =sizeof(unsigned int) n;
pp =sizeof(unsigned int);
}
else
{
pp=NULL;
}
return pp;
}
void Free(unsigned char *ptr)
{
if(!ptr)
return;
p-=sizeof(unsigned int) *(unsigned int *)(ptr-sizeof(unsigned int));
}
int main()
{
unsigned char *a=NULL;
printf("base=%p,p=%p,a=%p\n",base,p,a);
【c语言开辟空间函数 c语言申请空间函数malloc】a=Alloc(10);
printf("base=%p,p=%p,a=%p\n",base,p,a);
Free(a);
printf("base=%p,p=%p,a=%p\n",base,p,a);
return 0;
}
C语言malloc函数和free函数?在内存上有三个区域可以用来保存数据c语言开辟空间函数 , 一个是栈区、一个是堆区、一个是静态区,一般常用的定义变量是在栈区开辟 , 特点是系统开辟和释放c语言开辟空间函数;堆区的空间是由使用者来开辟空间 , 所以需要借助malloc开辟空间,free释放空间 。p=(char *)malloc(sizeof(char)*20);malloc函数申请空间,sizeof(char) * 20表示malloc开辟空间字节数为20字节,malloc前的char * 表示开辟空间进行强制类型转换为需要开辟的空间的数据类型 。free(p)函数表示释放由使用者开辟的空间,因为空间开辟是手动调用函数开辟的空间,所以释放空间也需要调用函数开辟 。
C语言:编写一个函数new 对n个字符开辟连续的存储空间在纯粹C编译器下,用new作函数名是可以的,但在与C兼容的编译器下,是不可能通过编译的,因为new是C的申请内存操作符,属保留字,不能由用户用作标识符 。这里将new改为mynew,举例代码如下:
//#include "stdafx.h"//If the vc6.0, with this line.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char *mynew(int n){
char *p;
if(p=(char *)malloc(n))
return p;
else return NULL;
}
int main(void){
char *p=mynew(20);//申请20个连续字节空间
if(p){//若申请成功
strcpy(p,"1234567890");//向申请的空间写入字符串
printf("%s\n",p);//打出来看看
free(p);//释放申请的空间
}
else printf("Application memory failure...\n");
return 0;
}
关于c语言开辟空间函数和c语言申请空间函数malloc的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- .net获取第三方平台数据库,net获取第三方平台数据库信息
- c语言宏定义判断文本编码,判断宏定义的值
- 前台js++数组+_拼接,js数组合并数组
- 怎么看显卡是刷的,怎么看显卡是刷的还是矿卡
- vb.net进销存源代码 web进销存带app源码
- 线上直播什么行业好,线上直播属于什么行业
- 开发游戏找谁,开发游戏的公司怎么赚钱
- 鸿蒙系统如何删除多余app,鸿蒙系统软件怎么删除
- php数据库不显示中文 php数据库不显示中文怎么办