C语言 memcpy_ssse3分段错误


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;
}

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

所以厌倦了动态分配内存而不是静态分配,使用 malloc。

但得到了分割法鲁特后630511104GDB 中的错误消息为

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

你把 2 GB 大 s1 放在堆栈上,没有那么大。尝试将 s1 与 new 一起分配:

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

相关内容

  • 没有找到相关文章

最新更新