c中的memset struct数组时出现分段错误

Posted

技术标签:

【中文标题】c中的memset struct数组时出现分段错误【英文标题】:Segmentation fault when memset struct array in c 【发布时间】:2017-05-19 04:24:24 【问题描述】:

我正在尝试清空结构数组中的所有数据。

但事实证明是分段错误。 谁能帮帮我。

结构

struct entry

   char  user;
    char  name[9];
    char  extension[4];
    short blockcount;
    short block[8];
;
struct entry directory[128];

main()

for (int i = 0; i < 128; ++i)

      memset(&directory[i], 0, sizeof(directory));

【问题讨论】:

【参考方案1】:

你需要改变

memset(&directory[i], 0, sizeof(directory));

memset(&directory[i], 0, sizeof(struct entry));

因为你想 memset 结构数组的单个元素

你也可以使用 memset 整个数组

memset(directory, 0, sizeof(directory));// single statement, no need to loop all elements

【讨论】:

谢谢,没想到这么简单 sizeof(directory[0]) 也将以相同的方式工作。使其与您在问题中提出的内容相似。

以上是关于c中的memset struct数组时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 C 中使用 realloc 扩展数组时出现分段错误错误 [关闭]

在 C 中创建大型数组时出现分段错误

尝试声明大数组时出现分段错误和核心转储[重复]

添加指向数组的指针时出现分段错误

向结构成员添加值时出现结构分段错误

将指向数组的指针传递给函数时出现分段错误(C++)