如何为C中的结构数组正确分配内存?

亚尼斯

这是我第一次使用struct,因为我对C还是比较陌生。当我尝试输入3个struct的值时,程序崩溃了,但是它对于1和2都可以正常工作。我想我可能实际上分配的不够多记忆。这是为结构数组分配内存的正确方法吗?

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

#define MIN_SIZE 0
#define MAX_SIZE 100
#define MAX_MONTH_STR 9

//Define a struct data type
typedef struct
{
    char* month;
    int day;
    int year;
}date;

//Method to allocate memory for a list of date structures
date* allocateStruct(int size)
{
    //Declaration of variables
    date *array;
    int i;

    //Allocate memory for rows (to store 'size' many pointers to 'date' struct data type)
    array = malloc(size*sizeof(date*));

    //For-loop to allocate memory for columns (to store 'size' many integers, and initialize them to zero)
    for (i=0; i<size; i++)
    {
        array[i].month = calloc(MAX_MONTH_STR,sizeof(char));
        array[i].day = calloc(1,sizeof(int));
        array[i].year = calloc(1,sizeof(int));
    }

    return array;
}

//Method to free memory allocated
//TO DO. . .

int main()
{
    //Declaration of variables
    int n;
    date* date_list;
    int i, j, k; //used in loops

    //Read input
    do
    {
        //printf("Enter number of dates you want to enter (between 1 and 10000):\n");
        scanf("%d", &n);
    }while(n<MIN_SIZE || n>MAX_SIZE);

    //ALLOCATE MEMORY
    date_list = allocateStruct(n);


    //For-loop to store values in 'date_list'
    for (i=0; i<n; i++)
    {
        //printf("Enter the date (month day year) in the following format: text number number");
        scanf("%s", date_list[i].month);
        scanf("%d", &date_list[i].day);
        scanf("%d", &date_list[i].year); //need & ?
    }

//--------> crashes here if 3 dates are input, ok for 1 and 2

    //Test print
    for (i=0; i<n; i++)
    {
        //printf("Enter the date (month day year) in the following format: text number number");
        printf("%s ", date_list[i].month);
        printf("%d ", date_list[i].day);
        printf("%d\n", date_list[i].year); //need & ?
    }

    return 0;
}
Tversteeg

您正在尝试分配一个数组,该数组的指针大小指向日期结构,而不是日期结构的实际大小。

更改date*date

array = malloc(size*sizeof(date));

此外,您不需要分配日期和年份变量,因为malloc为您分配了它们。

for (i=0; i<size; i++)
{
     array[i].month = calloc(MAX_MONTH_STR,sizeof(char));
     array[i].day = 0;
     array[i].year = 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为C中的结构数组正确分配内存?

来自分类Dev

c - 如何为c中链表内的结构分配内存?

来自分类Dev

如何为结构,结构内部的结构数组正确分配内存,以及如何将该数组作为参数传递

来自分类Dev

C,如何为另一个结构中的结构数组分配正确的空间量?

来自分类Dev

如何为类型定义的结构正确分配内存

来自分类Dev

如何为结构成员正确分配内存?

来自分类Dev

如何为结构数组中的char字符串分配内存?

来自分类Dev

如何为结构数组分配内存,然后将该数组传递给一个函数,该函数将在C中填充该数组

来自分类Dev

C没有为结构数组正确分配内存?

来自分类Dev

C - 如何为结构内的链表分配内存

来自分类Dev

C内存分配:结构中某个结构中的定长数组

来自分类Dev

如何在结构数组中为typedef结构分配内存

来自分类Dev

如何为PHP中的数组预分配内存?

来自分类Dev

如何在CUDA中为数组结构分配内存?

来自分类Dev

在C中的结构内的指针数组的动态内存分配

来自分类Dev

C中结构指针的内存分配数组

来自分类Dev

如何在C中为未知大小的结构数组分配内存

来自分类Dev

C中的结构内存分配

来自分类Dev

如何清除在C ++中为指针正确指向的数组分配的内存?

来自分类Dev

C程序中如何为struct和union分配内存?

来自分类Dev

结构中数组的动态内存分配

来自分类Dev

分配内存以在C中保存结构数组

来自分类Dev

内存泄漏-如何为在另一个结构中作为线程参数传递的Typdef结构分配内存?

来自分类Dev

C:数组未正确分配更多的内存

来自分类Dev

Python中如何为`dict`分配内存?

来自分类Dev

如何在C中的内存中静态分配数组?

来自分类Dev

在C中为结构类型分配内存

来自分类Dev

C++中的结构内存分配

来自分类Dev

如何分配结构的内存?

Related 相关文章

  1. 1

    如何为C中的结构数组正确分配内存?

  2. 2

    c - 如何为c中链表内的结构分配内存?

  3. 3

    如何为结构,结构内部的结构数组正确分配内存,以及如何将该数组作为参数传递

  4. 4

    C,如何为另一个结构中的结构数组分配正确的空间量?

  5. 5

    如何为类型定义的结构正确分配内存

  6. 6

    如何为结构成员正确分配内存?

  7. 7

    如何为结构数组中的char字符串分配内存?

  8. 8

    如何为结构数组分配内存,然后将该数组传递给一个函数,该函数将在C中填充该数组

  9. 9

    C没有为结构数组正确分配内存?

  10. 10

    C - 如何为结构内的链表分配内存

  11. 11

    C内存分配:结构中某个结构中的定长数组

  12. 12

    如何在结构数组中为typedef结构分配内存

  13. 13

    如何为PHP中的数组预分配内存?

  14. 14

    如何在CUDA中为数组结构分配内存?

  15. 15

    在C中的结构内的指针数组的动态内存分配

  16. 16

    C中结构指针的内存分配数组

  17. 17

    如何在C中为未知大小的结构数组分配内存

  18. 18

    C中的结构内存分配

  19. 19

    如何清除在C ++中为指针正确指向的数组分配的内存?

  20. 20

    C程序中如何为struct和union分配内存?

  21. 21

    结构中数组的动态内存分配

  22. 22

    分配内存以在C中保存结构数组

  23. 23

    内存泄漏-如何为在另一个结构中作为线程参数传递的Typdef结构分配内存?

  24. 24

    C:数组未正确分配更多的内存

  25. 25

    Python中如何为`dict`分配内存?

  26. 26

    如何在C中的内存中静态分配数组?

  27. 27

    在C中为结构类型分配内存

  28. 28

    C++中的结构内存分配

  29. 29

    如何分配结构的内存?

热门标签

归档