编辑:
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;
由于程序在运行时崩溃,我似乎做错了。 有帮助吗?谢谢!
答案 0 :(得分:5)
为什么需要分配内存,声明
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
答案 1 :(得分:1)
似乎你需要一个指针数组到PRO:
PRO *Array[100];
PRO *newPro = (PRO *) malloc (sizeof(PRO));
/* ... */
Array[0] = newPro;
我不知道enteringProcess
是什么,所以我不能发表意见。只是除了newPro
的返回之外你不应该向malloc
分配任何内容,否则你将泄漏新对象。
答案 2 :(得分:0)
我猜测将进程指向内存中的无效位置。
newPro = enteringProcess
是你的问题。