C、 在结构中设置变量
我用C编写的程序有问题。实际上,它停在C、 在结构中设置变量,c,memory-management,struct,initialization,C,Memory Management,Struct,Initialization,我用C编写的程序有问题。实际上,它停在e->identifiant=0行 代码: struct Evenement* e=(struct Evenement*)(malloc(sizeof(struct Evenement))); e->identifiant=0; 与: struct Evenement{ int identifiant; char titre[100]; struct Creneau creneau; char lieu[50]; char description[5
e->identifiant=0行代码>
代码:
struct Evenement* e=(struct Evenement*)(malloc(sizeof(struct Evenement)));
e->identifiant=0;
与:
struct Evenement{
int identifiant;
char titre[100];
struct Creneau creneau;
char lieu[50];
char description[500];
};
你有什么想法吗?我编译并运行了以下程序:
#include <stdio.h>
#include <stdlib.h>
struct Evenement{
int identifiant;
char titre[100];
char lieu[50];
char description[500];
};
int main()
{
struct Evenement* e=(struct Evenement*)(malloc(sizeof(struct Evenement)));
e->identifiant = 0;
printf("%d", e->identifiant);
return 0;
}
#包括
#包括
结构均匀度{
内部标识符;
煤焦滴定度[100];
char Liue[50];
字符描述[500];
};
int main()
{
结构均衡*e=(结构均衡*)(malloc(sizeof(结构均衡));
e->identiant=0;
printf(“%d”,e->标识);
返回0;
}
而且,没有问题。你能告诉我们错误是什么吗
我删除了struct-Creneau-Creneau代码>行,因为没有对它的描述。这可能是问题吗?malloc
成功了吗?您不需要在C程序中强制转换返回值。它如何停止?你有分段错误吗?如果是这样的话,@CarlNorum可能走上了正确的道路,因为malloc没有成功。在尝试分配之前,您应该检查e
是否为非零(非空)。事实上,在malloc之后e为空。。。我不明白为什么。。。Malloc写入正确。。。不是吗?如果e
为NULL
,则表示您的程序“内存不足”,或者程序中的其他内容损坏了malloc()
所使用的控制信息,从而导致混淆。显示的两行唯一的错误是在使用malloc()
之前没有测试它的结果。真正的问题在别处。如果你有空,就用它。如果没有,请查看它是否可用。@UnfinedBehaviour:很久以前,可以在上面创建一个问题和一组答案,以便在此网站上简单地提供信息。形式已经改变了,我认为现在创建这样一个问题和答案并不容易——而且可以说这并不是一个更好的改变(尽管这样的问答项目存在合法的问题)。因此,如果你有或创建了一个关于内存泄漏的非正常维基页面(大概,我们不能称之为维基解密?),那么它可能会成为此类问题的有用参考点;问题仍然存在…@user1360503:在您的代码中,问题不在您显示的行中;它在程序的其余部分。您显示的行只是检测问题的位置。对于内存损坏问题(很可能是您的问题;另一种情况是,您在某个地方分配了一个占用了所有可用内存的庞大数组),问题的原因往往远离检测到问题的位置,这是使问题难以检测到的特征之一。正如@Jonathan所说,问题不在代码的这一部分。如果您可以分离程序中的方法或有问题的东西并单独测试它们;您将能够检测问题所在。