gpt4 book ai didi

堆损坏,C 中的错误

转载 作者:行者123 更新时间:2023-11-30 19:34:46 26 4
gpt4 key购买 nike

好吧,我不需要解释太多,这个函数在我一直标记的行处出现这个错误,只有在这个函数中有内存分配,请帮我找出问题出在哪里......(阅读这里还有一些其他主题,但没有任何帮助我解决它)错误:“Windows 在 sapProject.exe 中触发了断点。

这可能是由于堆损坏造成的,这表明 sapProject.exe 或其加载的任何 DLL 中存在错误。”

void storeTok(char * lexem,int line,enum keywords typeof)
{
int ind;
if(tokens.size%100==0)
{
if(tokens.size==0)
{
tokens.ptrInd=-1;
tokens.first=(node*)malloc(sizeof(node));
tokens.first->back = NULL;
tokens.first->next = NULL;
tokens.last=tokens.first;
}
else
{
node * nodenz=(node*)malloc(sizeof(node)); /error is here
nodenz->back = tokens.last;
nodenz->next = NULL;
tokens.last->next=nodenz;
tokens.last=tokens.last->next;
tokens.last=nodenz;
}
}

// general




ind=tokens.size-(tokens.size/100)*100;
tokens.last->tokens[ind].type=typeof;
tokens.last->tokens[ind].linen=line;
tokens.last->tokens[ind].lexema=lexem;
tokens.size++;
}

谢谢!

编辑(除了这个,还有一个标题(就是这样..):

typedef struct token
{
char * lexema ;
int linen;
enum keywords type;
}token;

typedef struct node
{
struct node * next,*back;
token tokens [50];
}node;

typedef struct LL
{
struct node * last, *first, * ptr;
int size,ptrInd;
}LL;

LL tokens;

void storeTok(char * lexem,int line,enum keywords typeof);

主要功能:

void main()
{
int i;
for(i=0;i<26;++i)
{
storeTok("blabla",1,END);
storeTok("sdfasd",1,START);
storeTok("sfadds",1,IF);
storeTok("gvdfd",1,THEN);
storeTok("dfsfd",1,ELSE);
}
storeTok("dfsfd",1,EOF_);
}

最佳答案

该行可能是受害者。破坏堆的代码在其他地方。您可以使用 valgrind 等工具或类似工具来查找它。 (或者给我们足够的代码来复制错误,我们可以为您追踪它。)

关于堆损坏,C 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436376/

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