C - 将 free() 与结构指针一起使用会导致程序崩溃



错误:

*** Error in `./main': free(): invalid next size (fast): 0x080e1008 ***
Aborted

这是我的程序,当我尝试释放结构时它会崩溃。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
//struct words contains a word as well as a boolean
//to check if it was used yet or not.
struct words
{
    char * word;
    int bool;
};
//the main function in which everything happens.
//the controller, if you will.
int main()
{
    struct words * word_library = malloc(9);
    struct timeval start, end;
    free(word_library);
    return 0;
}

所以这是让我的程序崩溃的代码:

免费(word_library);

是什么导致它崩溃?将来如何防止这种情况发生?我知道每次使用 malloc() 都需要 free() 之后来释放它。但是当我不使用free()时,它结束得很好,但我确定存在内存泄漏。

这个:

struct words * word_library = malloc(9);

不会为大小为 9 的struct words数组分配空间。相反,它分配 9 个字节。你需要

struct words * word_library = malloc(sizeof(struct words)*9);

分配大小为 9 的数组。

如果要

使word指向字符串文本,也不需要为struct中的分配和释放内存。

相关内容

  • 没有找到相关文章

最新更新