そのため、毎回このエラーが発生しているため、どこで解決すればよいかわかりません。
これは、常に null を返す場所です。
wordData * ptr;
ptr = (wordData*)malloc(sizeof(wordData)); //returns null every time
if(NULL == ptr)
{
printf("\n Node creation failed in add list\n");
return NULL;
}
これは私の構造体です:
typedef struct _wordData
{
int iWordID;
char * cWord;
struct _wordData *next;
} wordData;
しかし、まったく同じコードで以前にリストにヘッドノードを作成すると、機能します! 編集:詳細:
printf("\n creating list with headnode as [%d] %s\n",iWordID,cWord);
wordData *ptr;
ptr = (wordData*)malloc(sizeof(wordData));
if(NULL == ptr)
{
printf("\n Node creation failed in create list \n");
return NULL;
}
したがって、上記のコードは実際にヘッドノードを作成します。
編集:メモリ上:利用可能なメモリがたくさんあります:)
編集:より多くのコード:
void clearStr() // adding word into list with a struct containing word,wordID
{
add_to_list(iID,cStr,true);
memset(cStr, '\0', sizeof(cStr) );
iCounter = 0;
}
wordData* add_to_list(int iWordID, char * cWord, bool add_to_end)
{
char temp[strlen(cWord)+1];
strcpy(temp, cWord);
if(NULL == head)
{
return (create_list(iWordID, temp));
}
if(add_to_end)
printf("\n Adding node to end of list with iWordID [%d] %s\n",iWordID, cWord);
else
printf("\n Adding node to beginning of list with iWordID [%d]\n",iWordID);
int sizeWordData = sizeof(wordData);
printf("Size wordData is: %d",sizeWordData); //12 every time
wordData * ptr;
ptr = (wordData*)malloc(sizeof(wordData)); //waarom is dit null?
if(NULL == ptr)
{
printf("\n Node creation failed in add list\n");
return NULL;
}
ptr->iWordID = iWordID;
ptr -> cWord,temp;
strcpy(ptr -> cWord, temp);
ptr->next = NULL;
if(add_to_end)
{
curr->next = ptr;
curr = ptr;
printf("pointers geset");
}
else
{
ptr->next = head;
head = ptr;
}
return ptr;
}
私はすべてを検索しましたが、与えられた解決策のどれも私を助けてくれなかったので、助けていただければ幸いです!