91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: 其他
  • 標簽: ,,??,,,,??

資源簡介

ssd6 第七次實驗 內存管理 四川大學軟件學院 2018年秋季

資源截圖

代碼片段和文件信息

#include?
#include?
#include?“debugmalloc.h“
#include?“dmhelper.h“
#include?



#define?CHECKSUM_PL(pptr) *((int*)(pptr)?-?5)
#define?LINENUMB_PL(pptr) *((int*)(pptr)?-?4)
#define?SIZE_PL(pptr) *((int*)(pptr)?-?3)
#define?FIFENAME_PL(pptr)???????*((int*)(pptr)?-?2)
#define?FSTFENCE_PL(pptr) *((int*)(pptr)?-?1)
????????????????//payload?pointer???????
#define?ENDFENCE_PL(pptrsize) *(int*)((char*)(pptr)?+?(size))?



//dual?list?node
typedef?struct?DuLNode{
void?*?pptr;??//PayloadPoinTeR
struct?DuLNode?*?prior;
struct?DuLNode?*?next;
}DuLNode?DuLList;




DuLList?list?=?{NULL?NULL?NULL};
int?allocated_size?=?0;



DuLNode*?get_last_node(DuLList?*L)
{
DuLNode*?temp?=?L;
while(temp->next?!=?NULL)
temp?=?temp->next;
return?temp;
}


DuLNode*?get_specify_node(DuLList?*L?void*?e)
{
DuLNode*?temp?=?L;


while(temp->pptr?!=?e)
temp?=?temp->next;
if(temp->pptr?!=?e)
return?NULL;
else
return?temp;
}


int??insert_node(DuLList*?L?void*?e)
{
DuLNode*?new_node;
DuLNode*?last?=?get_last_node(L);

if(!(new_node?=?(DuLNode*)malloc(sizeof(DuLNode))))
return?0;
new_node->pptr?=?e;
new_node->prior?=?last;??new_node->next?=?NULL;
last->next?=?new_node;


return?1;
}



int?delete_node(DuLList*?L?void*?e)
{
DuLNode*?specify;
if(NULL?!=?(specify?=?get_specify_node(L?e)))
{


specify->prior->next?=?specify->next;
if(specify->next?!=?NULL)
specify->next->prior?=?specify->prior;
free(specify);
return?1;
}

return?0;
}



//mprt:?MallocPoinTeR
void?initialize_raw_memory(void*?mptr?int?sizechar?*filenameint?linenumber)
{
*(int*)mptr?=?(int)linenumber?+?(int)filename?+?(int)size;//checksum
*((int*)mptr+1)?=?linenumber;?
*((int*)mptr+2)?=?size;
*((int*)mptr+3)?=?(int)filename;
*((int*)mptr+4)?=?0xCCDEADCC;?//start?fence
*(int*)((char*)mptr?+?size?+?20)?=?0xCCDEADCC;?//end?fence;
}


//pprt:?PayloadPoinTeR
void?error_check(void*?pptr?char?*filename_free?int?linenumber_free)
{
DuLNode*?node?=?list.next;
int?size?=?SIZE_PL(pptr);
int?checksum?=??LINENUMB_PL(pptr)?+?SIZE_PL(pptr)?+?FIFENAME_PL(pptr);

while(node?!=?NULL){
if(node->pptr?==?pptr)
break;
node?=?node->next;
}
if(node?==?NULL)
error(4?filename_free?

評論

共有 條評論