Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C、 在结构中设置变量_C_Memory Management_Struct_Initialization - Fatal编程技术网

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

我用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[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所说,问题不在代码的这一部分。如果您可以分离程序中的方法或有问题的东西并单独测试它们;您将能够检测问题所在。