内存操作小结
来源:互联网 发布:嵌入式软件开发团队 编辑:程序博客网 时间:2024/06/06 21:38
在写程序时,时常遇到各种各样的内存操作,我把遇到的都记录下来,方便以后的操作。遇到新的方法就加上去。
1) strcpy
原型声明:extern char *strcpy(char* dest, const char *src);
头文件:#include <string.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
struct v4l2_capability *cap;memset(cap, 0, sizeof *cap); 清0strcpy(cap->driver, "myuvc"); 赋值
2) memcpy
原型:void *memcpy(void *dest, const void *src, size_t n);
char *s="Golden Global View";char d[20];clrscr();memcpy(d,s,( strlen(s)+1) );printf("%s",d);getchar();输出结果:Golden Global View
3) mmap
mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。
void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);
fd为即将映射到进程空间的文件描述字,一般由open()返回;
len是映射到调用进程地址空间的字节数,它从被映射文件开头offset个字节开始算起。
prot参数指定共享内存的访问权限。可取如下几个值的或:PROT_READ(可读),PROT_WRITE(可写),PROT_EXEC(可执行),PROT_NONE(不可访问)。
flags由以下几个常值指定:MAP_SHARED, MAP_PRIVATE, MAP_FIXED。其中,MAP_SHARED,MAP_PRIVATE必选其一,而MAP_FIXED则不推荐使用。
struct stat st; char buffer=” inforindex”; Fileinformation *_fileinfoIndexptr = NULL; if(stat(buffer,&st)<0) { fprintf(stderr,"error to stat %s\n",buffer); exit(-1); }// mmap the inforindex to _fileinfoIndexptr int fd=open(buffer, O_RDONLY); if(fd<0) { printf("error to open %s\n",buffer); exit(-1); } _fileinfoIndexptr = (Fileinformation*)mmap(NULL,st.st_size, PROT_READ,MAP_SHARED,fd,0);if(MAP_FAILED == _fileinfoIndexptr) { printf("error to mmap %s\n",buffer); close(fd); exit(-1); } close(fd);
- 内存操作小结
- 内存小结
- C++内存使用小结
- 共享内存读写小结
- IE内存泄露小结
- 内存对齐用法小结
- 内存故障小结
- 内存泄露小结
- IOS内存管理小结
- android 内存泄露 小结
- 内存布局小结
- VxWorks 内存结构小结
- C++ 内存管理小结
- GDI内存泄露小结
- IOS内存管理小结
- android内存管理小结
- 内存管理小结1
- 内存池的小结
- Spring注释学习 几步走
- 创业赚大钱者的九大综合素质
- WTL的stdafx.h的排列顺序
- MAC下安装scipy等科学计算包
- JAVA中实现多个分隔符拆分字符串
- 内存操作小结
- PHP字符编码
- 第三周项目1-动态链表体验(一)
- 配置Oracle dbconsole的密钥
- smarthosts的Mac安装方法
- c语言目录操作总结
- 写在最前
- PAT 1001
- PAT 1002