关于c 语言mmap的一个问题。。。。。

#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<unistd.h>#include<sys/mm... #include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>

int main(int argc, const char *argv[])
{
int fd, i;
unsigned int *p;

fd = open("/dev/fb0", O_RDWR);
if (fd < 0) {
perror("open error");
exit(1);
}

p = (unsigned int *)mmap(NULL, 1366*768*4, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, 0);
if (p == MAP_FAILED) {
perror("mmap error");
exit(1);
}

close(fd);

for (i = 0; i < 1366 * 768; i ++) {
p[i] = 0xffffff;
usleep(1000);
}

munmap(p, 1366 * 768 * 4);

return 0;
}
环境: LINUX 13.10 64BIT
实现功能: 向屏幕输出白画面,一个像素点一像素点的输出。。。。
编译可以通过,,, 但是只要一运行 就出错误
mmap error: Invalid argument
但是我把其中的1366改为1024就不报错。。。但是程序却没有正确现象。。。。why
?????
展开
 我来答
yeardandan2
2014-01-02
知道答主
回答量:54
采纳率:0%
帮助的人:24.8万
展开全部
你可以试一下 给p分配内存
更多追问追答
追问
mmap 就是分配内存的。。。
追答
从你的错误显示来看应该是内存分配有问题   你修改下试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式