📄 testmalloc.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>struct list { struct list *next;};int main(void){ int z=999; int *y=&z; int *x=NULL; struct list *save; struct list *lp; int i; printf("pointer to x is %p\n", x); printf("pointer to y is %p\n", y); x=malloc(sizeof(int)*2000); printf("pointer to x is %p\n", x); y=malloc(sizeof(int)*100); printf("pointer to y is %p\n", y); free(x); free(y); printf("about to free(0)\n"); free(0); x=malloc(13); printf("x = %p\n", x); memcpy(x, "Small string", 13); printf("0x%p test string1: %s\n", x, (char *)x); y = realloc(x, 36); printf("0x%p test string1: %s\n", y, (char *)y); memcpy(y, "********** Larger string **********", 36); printf("0x%p test string2: %s\n", y, (char *)y); free(y); printf("Allocate 100 nodes 500 bytes each\n"); save = 0; for (i=0; i<100; i++) { lp = malloc(500); if (lp == 0) { printf("loop 1: malloc returned 0\n"); goto Failed; } lp->next = save; save = lp; } printf("freeing 100 nodes\n"); while (save) { lp = save; save = save->next; free(lp); } printf("try realloc 100 times \n"); lp = 0; for (i=1; i<=100; i++) { lp = realloc(lp, i*200); if (lp == 0) { printf("loop 3: realloc returned 0\n"); goto Failed; } } realloc(lp, 0); printf("Allocate another 100 nodes 600 bytes each\n"); save = 0; for (i=0; i<100; i++) { lp = malloc(600); if (lp == 0) { printf("loop 2: malloc returned 0\n"); goto Failed; } lp->next = save; save = lp; } printf("freeing 100 nodes\n"); while (save) { lp = save; save = save->next; free(lp); } printf("alloc test PASSED\n"); exit(0);Failed: printf("!!!!!!!!!!!! alloc test FAILED. !!!!!!!!!!!!!!!\n"); exit(1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -