malloc.c

来自「sdcc是为51等小型嵌入式cpu设计的c语言编译器支持数种不同类型的cpu」· C语言 代码 · 共 89 行

C
89
字号
/* Simple malloc tests. */#include <testfwk.h>#include <stdlib.h>#if defined(SDCC_pic16)#include <malloc.h>#endifxdata char heap[100];voidtestMalloc(void){  void xdata *p1, *p2, *p3;  char *p;  unsigned char i;#if !defined(__GNUC__) && !defined(SDCC_gbz80) && !defined(SDCC_z80)#if defined(SDCC_pic16)  _initHeap(heap, sizeof heap);#else  init_dynamic_memory((MEMHEADER xdata *)heap, sizeof(heap));#endif  p1 = malloc(200);  ASSERT(p1 == NULL);  LOG(("p1 == NULL when out of memory\n"));#ifdef PORT_HOST  LOG(("p1: %p\n", p1));#else  LOG(("p1: %u\n", (unsigned) p1));#endif#endif  p1 = malloc(5);  ASSERT(p1 != NULL);#ifdef PORT_HOST  LOG(("p1: %p\n", p1));#else  LOG(("p1: %u\n", (unsigned) p1));#endif  p2 = malloc(20);  ASSERT(p2 != NULL);#ifdef PORT_HOST  LOG(("p2: %p\n", p2));#else  LOG(("p2: %u\n", (unsigned) p2));#endif  p = (char*)p2;  for (i=0; i<20; i++, p++)    *p = i;  p2 = realloc(p2, 25);  ASSERT(p2 != NULL);#ifdef PORT_HOST  LOG(("p2, after expanding realloc: %p\n", p2));#else  LOG(("p2, after expanding realloc: %u\n", (unsigned) p2));#endif  p = (char*)p2;  for (i=0; i<20; i++, p++)    ASSERT(*p == i);  p2 = realloc(p2, 15);  ASSERT(p2 != NULL);#ifdef PORT_HOST  LOG(("p2, after shrinking realloc: %p\n", p2));#else  LOG(("p2, after shrinking realloc: %u\n", (unsigned) p2));#endif  p = (char*)p2;  for (i=0; i<15; i++, p++)    ASSERT(*p == i);  free(p2);  p3 = malloc(10);  ASSERT(p3 != NULL);#ifdef PORT_HOST  LOG(("p3, after freeing p2: %p\n", p3));#else  LOG(("p3, after freeing p2: %u\n", (unsigned) p3));#endif}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?