当前位置: 技术问答>linux和unix
动态分配内存后,memset失败
来源: 互联网 发布时间:2016-06-28
本文导语: linux 嵌入式 mips板子,写一个应用程序。 在上面分配了一块约800K的动态内存, 把文件读到内存里,然后再分配了一块约4M的动态内存,之后调用memset置0就出现 页面错误,我把4M改小一点,改成几百K以下,就不会...
linux 嵌入式 mips板子,写一个应用程序。
在上面分配了一块约800K的动态内存, 把文件读到内存里,然后再分配了一块约4M的动态内存,之后调用memset置0就出现
页面错误,我把4M改小一点,改成几百K以下,就不会有问题。 请问这是什么原因?
即:
char * buf_8 = (char*)malloc(800000);
read(fd,buf_8,800000);
char* buf_4M = (char*)malloc(4*1024*1024);
memset(buf_4M ,0x00,4*1024*1024); ---->页面报错
在上面分配了一块约800K的动态内存, 把文件读到内存里,然后再分配了一块约4M的动态内存,之后调用memset置0就出现
页面错误,我把4M改小一点,改成几百K以下,就不会有问题。 请问这是什么原因?
即:
char * buf_8 = (char*)malloc(800000);
read(fd,buf_8,800000);
char* buf_4M = (char*)malloc(4*1024*1024);
memset(buf_4M ,0x00,4*1024*1024); ---->页面报错
|
buf_4M是不是NULL?最好检查一下malloc的返回值。
|
你板子内存有多大?