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

似乎需要一个指向PRO:的指针数组

PRO *Array[100];
PRO *newPro = (PRO *) malloc (sizeof(PRO));
/* ... */
Array[0] = newPro;

我不知道enteringProcess是什么,所以我不能发表意见。只是除了返回malloc之外,您不应该给newPro分配任何东西,否则您将泄露新对象。

我猜enteringProcess指向内存中的一个无效位置。

newPro = enteringProcess

是你的问题。

相关内容

  • 没有找到相关文章

最新更新