関数のパラメータにmalloc()returndの値を代入し、その関数の外部にアクセスすると...ここで何が間違っていますか? MYサンプルコード:mallocのセグメンテーションフォルト:
#include <stdio.h>
#include <stdlib.h>
struct student{
double cgpa;
int id;
char name[100];
};
void init(student *ptr)
{
ptr = (struct student*)malloc(sizeof(struct student));
ptr->id = 1;
ptr->cgpa = 4.00;
sprintf(ptr->name,"murad");
printf("In Initfunc:\nname %s\nid %d\ncgpa %lf\n",ptr->name,ptr->id,ptr->cgpa);
}
int main()
{
struct student *murad;
init(murad);
printf("IN Main:\nname %s\nid %d\ncgpa %lf\n",murad->name,murad->id,murad->cgpa);
free(murad);
return 0;
}
OT:BTW、これをCコンパイラでコンパイルすると、この無駄なmallocの結果のキャストを削除するだけです。 – alk
この 'void init(student * ptr)'は無効です。C.これがコンパイルされた場合、C++コンパイラを使用してコンパイルされているようです。 – alk