私はあまりにも多くの説明をする必要はありませんが、この関数は、私はすべての時間をマークした行でこのエラーを取得するだけで、この関数では、memoeryの割り当てがあります エラー:「WindowsがsapProject.exeでブレークポイントをトリガーしました。ヒープの破損、Cのエラー
これは、ヒープの破損が原因である可能性があります(これは、ここでいくつかの他のトピックを読んでください) 、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++;
}
ありがとう!
編集(これ以外、そこヘッダでもある(と、それをthatsの...):
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);
メインFUNC:。
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_);
}
次に私のdownvoteについては説明しません。いずれか。 – GhostCat
@GhostCatは説明してください:)、 あなたは人々に質問をしたくないのですか? – secret
付属のメッセージを読んでください:あなたの質問は保留になります。 – GhostCat