|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 haiouda 于 2015-3-27 11:31 编辑
- /********************************************************************************
- 1)编写一个函数 new ,对 n 个字符开辟连续的存储空间,此函数应返回一个指针(地址),
- 指向字符串开始的空间。 new(n)表示分配 n 个字节的内存空间。
- 2)写一个函数 free,将前面用 enw 函数占用的空间释放。 free(p)表示将p(地址)指向
- 的单元以后的内存段释放。
- *********************************************************************************/
- #if(1)
- #include <stdio.h>
- #define NEWSIZE 1000 //指定开辟存区的最大容量
- void main()
- {
- char newbuf[NEWSIZE]; //定义字符数组newbuf
- char *newp=newbuf; //定义指针变量newp,指向可存区的始端
- char *new(int n);
- void free(char *p);
-
- new(10);
- free(newp);
- }
- char *new(int n) //定义开辟存区的函数new,开辟存储区后返回指针
- {char newbuf[NEWSIZE]; //定义字符数组newbuf
- char *newp=newbuf; //定义指针变量newp,指向可存区的始端
-
- if (newp+n<=newbuf+NEWSIZE) //开辟区未超过newbuf数组的大小
- {
- // newp+=n; // newp指向存储区的末尾
- return(newp-n); //返回一个指针,它指向存区的开始位置
- }
- else
- return(NULL); //当存区不够分配时,返回一个空指针
- }
- void free(char *p) //释放存区函数
- {
- char newbuf[NEWSIZE]; //定义字符数组newbuf
- char *newp=newbuf; //定义指针变量newp,指向可存区的始端
-
- if (p>=newbuf && p<=newbuf + NEWSIZE)
- newp=p;
- }
- #endif
复制代码
|
-
|