Cでのプロセス構造メモリ割り当て

編集:

Typedef struct SPro{
     int arrivalTime;
     char processName[15];
     int burst;
} PRO;

私はPROタイプの配列を持っています

PRO Array[100];
PRO enteringProcess;
//initialize entering process

新しいプロセスを作成し、mallocを使ってそのプロセスにメモリを割り当てる必要があります。そして、配列からmallocが返すメモリチャンクにポインタを向けます。

PRO *newPro = (PRO *) malloc (sizeof(PRO));
newPro = enteringProcess;
ProArray[0] = *newPro;

実行時にプログラムがクラッシュしてから間違ったことをしているようです。 どんな助け?ありがとう!

ベストアンサー

なぜあなたはメモリを宣言する必要がありますか?

  PRO Array[100];

すでにメモリを割り当てられています。つまり、あなたのPROの定義は次のようなものです。

  typedef struct {
     .....
  } PRO;

あなたのコードをレビューします。

// Declare a new pointer, and assign malloced memory
PRO *newPro = (PRO *) malloc (sizeof(PRO));

// override the newly declared pointer with something else, memory is now lost
newPro = enteringProcess;

// Take the content of 'enteringProcess' as assigned to the pointer, 
// and copy the content across to the memory already allocated in ProArray[0] 
ProArray[0] = *newPro;

おそらく、代わりにこのようなものが欲しいでしょう。

  typedef struct {
     ...
  } PRO;

  PRO *Array[100];//Decalre an array of 100 pointers;

  PRO *newPro = (PRO *) malloc (sizeof(PRO));
  *newPro = enteringProcess; //copy the content across to alloced memory
  ProArray[0] = newpro;//Keep track of the pointers

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です