小编pyt*_*bie的帖子

调用memset会导致分段错误

该程序在我的UNIX机器上导致seg故障.我将原因缩小到memset()的第二次调用.

为什么会出现这种情况?代码的第一个"块"几乎与第二个相同,不是吗?为什么第二次调用memset segfault 时没有第一次调用?

我查看了有关segfaulting memset调用的其他线程,但没有一个类似于此.

如果你想知道为什么我写了这么简单的程序,它改编自我写的另一个程序,我用它来教自己如何将memcpy()应用于结构.

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    int x;
    char text;
} FilesStruct;

int
main(int argc, char** argv)
{
    FilesStruct *old_dir;
    memset(old_dir,0,sizeof(FilesStruct));
    old_dir->x = 3;
    old_dir->text = 'c';
    printf("old dir: %d,%c\n",old_dir->x,old_dir->text);

    FilesStruct *new_dir;
    memset(new_dir,0,sizeof(FilesStruct));
    new_dir->x = 7;
    new_dir->text = 'g';
    printf("new dir: %d,%c\n",new_dir->x,new_dir->text);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c unix struct memset segmentation-fault

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

memset ×1

segmentation-fault ×1

struct ×1

unix ×1