gpt4 book ai didi

c - malloc 在循环中崩溃,但在循环外正常

转载 作者:行者123 更新时间:2023-11-30 17:07:31 25 4
gpt4 key购买 nike

我的以下过程导致我的程序崩溃:

void parseLinear(xmlDocPtr doc, xmlNodePtr node, struct daastXML *xmlFile){

// Set up Linear Property Here
struct daastLinear *Linear;
Linear = (struct daastLinear *) malloc (sizeof(struct daastLinear));

// Assign Property
xmlFile->Ads->data->Inline->Creatives->data->linear = Linear;

// ***** THIS IS FINE HERE
struct daastMediaFile *newMediaFile;
newMediaFile = (struct daastMediaFile *) malloc (sizeof(struct daastMediaFile));

do {

// ***** PROGRAM CRASHES IF I PUT IT HERE INSTEAD
//struct daastMediaFile *newMediaFile;
//newMediaFile = (struct daastMediaFile *) malloc (sizeof(struct daastMediaFile));


if (xmlStrcmp (node->name, XMLSTR("Duration")) == 0){

char *nodeValue = (char *) node->children->content;
xmlFile->Ads->data->Inline->Creatives->data->linear->duration = malloc (sizeof(char));
strcpy (xmlFile->Ads->data->Inline->Creatives->data->linear->duration, nodeValue);

} else if (xmlStrcmp (node->name, XMLSTR("MediaFiles")) == 0){
//
parseMediaFiles(doc,node->children,xmlFile);
}
} while ((node = node->next));

}

问题出在以下几行:

struct daastMediaFile *newMediaFile;
newMediaFile = (struct daastMediaFile *) malloc (sizeof(struct daastMediaFile));

如果我将它们放在循环之外,程序可以正常工作,但如果我将它们放在循环内,它就会崩溃,并且我看不到任何错误日志。

有谁知道这里发生了什么吗?

编辑并可能修复?这是 MediaFile 的原始结构:

//THIS CAUSES A CRASH
struct daastMediaFile {
char *id;
char *delivery;
char *type;
char *url;
char *bitRate;
};

但是添加一个 int 变量,它就可以工作了吗?

//THIS CAUSES A CRASH
struct daastMediaFile {
char *id;
char *delivery;
char *type;
char *url;
char *bitRate;
int MediaID;
};

最佳答案

xmlFile->Ads->data->Inline->Creatives->data->linear->duration = malloc (sizeof(char));

这仅为一个字符分配内存。在 C 中,它可能只包含一个空字符串(因为最后一个字符是 '\0')。这是你想要的吗?

关于c - malloc 在循环中崩溃,但在循环外正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34047927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com