编辑:
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
是你的问题。