1. 理解操作系统存储管理原理。
  2. 研读Linux 内存管理所用到的文件include/linux/mm.h,主要包括两个数据结构:mem_map、free_area。
  3. 在Linux 下,用malloc()函数实现cat或copy命令。

例程1

申请内存、使用内存以及释放一块内存

#include <stdio.h> 
#include <stdlib.h>  //exit函数,实验指导上少了这一个头文件
#include <string.h> 
#include <malloc.h> 
int main(void) 
{ 
char * str; 
if ((str=(char*)malloc(10))==NULL) 
{ 
  printf("not enough memory to allocate buffer\\n"); 
  exit(1); 
} 
strcpy(str,"hello"); 
printf("string is %s\\n",str); 
free(str); 
return 0; 
}

例程2

在打开文件后,通过fstat()获得文件长度,然后通过malloc()系统调用申请响应大小的内存空间,通过read()将文件内容完全读入该内存空间,并显示出来。

#include<stdio.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <malloc.h> 
#include <string.h>  //实验指导上少了这一个头文件
#include <sys/types.h>  //实验指导上少了这一个头文件
#include <fcntl.h>  //实验指导上少了这一个头文件
main() 
{ 
  int fd,len; 
  void *tp; 
  struct stat ps; 
  //fd=open(“/home/jf03/try”,0); 
 fd = open(/home/wonz/b16xxxxxx.c”, 0);  //实验指导上这里写错了
  fstat(fd,&ps); 
  len=ps.st_size; 
  tp=malloc(len); 
  read(fd,tp,len); 
  //printf(“%s\\n”,tp); 
printf(%s\n”,tp);  //实验指导上这里写错了
printf(“the length of the file: %d\n”, len);  //实验指导上这里写错了
  close(fd); 
}
GitHub 加速计划 / li / linux-dash
13
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐