我在c。
的第一步容易入手,但我刚刚到达一个我不明白的地方...因为我觉得我做得很好。
它的结构,struct里面有另一个结构,但是当我创建一个变量时我不能修改它的参数。
示例:
#include <stdio.h>
#include <string.h>
#define MAX_SND 1000000
struct date {
int day;
int month;
int year;
};
struct sending {
char destiny[100];
char address[100];
char town[30];
char id[9];
struct date send_date;
};
struct sending_queue {
struct sending elements[MAX_SND];
int act;
};
main()
{
struct date one;
one.day = 34;
one.month = 3;
one.year = 1999;
struct sending two;
strcpy(two.id,"ABCD1234");
printf("%s %i ", two.id, one.year);
//struct sending_queue lotof;
//lotof.act = 0;
}
如果我删除coments ...我收到错误:分段错误(核心转储) 我知道如果你这样做会更好 但我需要一个简单的例子
为什么会出现此错误?和解决方案? 提前谢谢,见你
答案 0 :(得分:0)
您将一个大对象声明为局部变量。您的对象可能不适合本地内存(通常是 - 堆栈)。您的struct sending
大小超过239
个字节。 MAX_SND
内的struct sending_queue
个结构数组将占用超过239 * 1000000
个字节,大约为227 MB。虽然227 MB不是现代标准的灾难,但对于本地对象来说,这仍然可能过多,具体取决于平台上的堆栈大小。
如果你真的需要一个事先分配的大小的对象(这是一个很大的&#34;如果&#34;),最好的想法是使用malloc
动态分配它。