【发布时间】:2014-07-14 02:23:55
【问题描述】:
我目前正在处理注入错误,并且在其中一个应用程序中我想替换动态部分(Malloc)并使其成为静态部分,这样它就不会依赖于内核指令。 这是基本的链表程序。如何替换 Malloc 指令并仍然使喜欢的列表起作用。
struct test_struct* create_list(int val)
{
printf("\n creating list with headnode as [%d]\n",val);
struct test_struct *ptr = (struct test_struct*)malloc(sizeof(struct test_struct));
if(NULL == ptr1)
{
printf("\n Node creation failed \n");
return NULL;
}
ptr1->val = val;
ptr1->next = NULL;
head = curr = ptr1;
return ptr1;
}
【问题讨论】:
-
如何使用 satic 符号创建链表?这对我来说没有多大意义。最后你将只有一个符号。你的意思是“所以它不依赖于内核指令。”?
-
你可以有一个预设的结构池和一些标志来显示当前正在使用的结构。将“malloc”替换为找到一个未使用的;并替换 'free' wuth 重置正在使用的标志。
-
@TheMask 我正在研究故障注入器。这会在指令寄存器内容中注入错误。如果生成任何异常,我有应用程序级处理程序,但是当错误注入 malloc 程序集部分时,内核正在处理信号而不是应用程序异常处理程序。
-
@MattMcNabb:你能详细说明一下吗,非常感谢
-
@Anonymous 另一个问题是关于如何使用诸如
sbrk之类的标准操作系统级动态分配原语来实现malloc。这是关于实现链表而不动态分配内存(就系统而言)。虽然它可能仍然是某些 SO 问题的副本,但它不是您链接到的问题的副本。
标签: c