1 条题解
-
0
C++ :
#include <stdio.h> #include <stdlib.h> /* memory指针记录当前可用地址的起始地址 start_of_memory指针记录原始内存空间的起始地址 end_of_memory指针记录原始内存空间的结束地址 */ char *memory, *start_of_memory, *end_of_memory; int main() { char *alloc(int n); void tryfree(char *p); char *result; int m, n, i, new_block_size; scanf("%d %d", &m, &n); memory = (char *)malloc(m); start_of_memory = memory; end_of_memory = memory + m; for (i = 0;i < n;i++) { scanf("%d", &new_block_size); result = alloc(new_block_size); if (result == NULL) printf("%d ", 0); else printf("%d ", 1 + (result - start_of_memory)); } printf("\n"); return 0; } /* 内存分配函数 */ char *alloc(int n) { char *result = NULL; if (memory + n <= end_of_memory) { result = memory; memory += n; } return result; } /* 内存释放函数 */ void tryfree(char *p) { while (p < memory) { tryfree(p); p++; } }
- 1
信息
- ID
- 1375
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者