#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<error.h>
#include<errno.h>
#include<unistd.h>
#include<strings.h>
#include<stdbool.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
#include<sys/mman.h>
int main(int argc,char **argv)
{
int fd = open("/dev/fb0",O_RDWR);
if(fd == -1)
{
fprintf(stderr,"open (%s) failed: %s" ,"/dev/fb0",strerror(errno));
exit(0);
}
char *p = mmap(NULL,800*480*4,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
if(p == MAP_FAILED)
{
perror("mmap failed!");
exit(0);
}
unsigned long buff[3] = {0x000000ff,0x00ff0000,0x0000ff00};
int i,j = 0;
for(j;;j++) //主要变量j的使用,如果只有i循环,而没有j,则会出现雪花点,
{
for(i=0;i<800*480;i++)
{
memcpy(p+i*4,&buff[j%3],4);//此处少了求余,会出现段错误,内存溢出。
}
sleep(1);
}
return 0;
}
时间: 2024-12-23 09:50:55