#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;
}
原文:http://www.cnblogs.com/defen/p/5189481.html