次のように定義された構造体があります
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を使用して同じことを確認しました。