memcpy_ssse3分段错误

时间:2015-04-10 11:49:49

标签: c segmentation-fault malloc memcpy

SIZE = 2*1024*1024*1024;
struct
{
   char array[SIZE];
} s1;
char *seq;
File *sp;
int i = 0;
EoFReached = 0;
memset(array,0,SIZE*sizeof(char));
while(EoFReached == 0) {
    getseq(sp, seq, EoFReached);
    memcpy(&(s1->array[i]),seq, seqlen);
    i = i + seqlen;
}

在我的值630511104之后,memcpy会在数组本身的开头用一些错误的值覆盖某些值,但同时结束值是正确的。

使用malloc,动态分配内存而不是静态分配太累了。

但是在630511104之后得到了细分 gdb中的错误消息为

  

__ memcpy_ssse3()at ..sysdeps / x86_64 / multiarch / memcpy-ssse3.S:"   ../sysdeps/x86_64/multiarch/memcpy-ssse3.S:没有这样的文件或   。目录

1 个答案:

答案 0 :(得分:0)

你把2 gig大s1放在堆栈上并不是那么大。尝试使用new来分配s1:



struct fred { char array[SIZE]; }; fred * s1 = new fred;