次のように定義された構造体があります
struct _element;
typedef struct _element Element;
struct _element {
char* StudentName;
char* StudentID;
int StudentMarks;
};
構造体へのポインターは、次のようElementにグローバルに宣言されます。
Element * ePtr;
これで、構造体へのポインターを返す関数ができましたElement。これは以下のように定義されています。ePtrグローバルに宣言されたものと同じものがこの関数に取り込まれ、返されます。
Element * CreateElement(char * jName, char * jID, int jMarks)
{
printf("CreateElement \n");
puts(jName); puts(jID); printf("%d\n",jMarks);
ePtr->StudentName = (char*)malloc(sizeof(char)*strlen(jName));
strcpy(ePtr->StudentName, jName);
printf("After Creation \n");
puts(ePtr->StudentName);
return ePtr;
}
を使用してこの関数を呼び出しています
ePtr = CreateElement(iName,iID,iMarks);
別の関数から。puts関数呼び出し行のすぐ下のandprintfコマンドで示されているように、パラメーターに格納されている値は正しいです。
私の問題は、
ePtr->StudentName = (char*)malloc(sizeof(char)*strlen(jName));
ライン。gdbを使用して同じことを確認しました。