我有一个结构定义为
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
和命令所示。printf
我的问题是我在
ePtr->StudentName = (char*)malloc(sizeof(char)*strlen(jName));
线。我使用 gdb 进行了同样的检查。