0ctf_2017_babyheap 首先检查一下保护 IDA 分析好的代码如下 首先申请了一块内存地址用来存放结构体数组,地址随机。 堆题常见的几个功能。我们来看看add 这里申请内存用的是calloc 这里没有检查size,size可以为任意值。造成堆溢出。 delete函数free后指针清零 ...
分类:
其他好文 时间:
2020-05-16 21:12:21
阅读次数:
76
存储类别,链接和内存管理 关键字:auto、extern、static、register、const、volatile、restricted、 _Thread_local、_Atomic 函数:rand()、srand()、time()、malloc()、calloc()、free() 如何确定变量 ...
分类:
编程语言 时间:
2020-05-09 17:30:04
阅读次数:
83
动态存储分配在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:int n;scanf("%d",&n);int a[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入 ...
分类:
其他好文 时间:
2020-04-29 15:00:47
阅读次数:
52
/* 需要手动计算内存大小,未初始化 */ int *p = (int *)malloc(20 * sizeof(int)); /* 不需要手动计算内存大小,初始化为0 */ int *q = (int *)calloc(20, sizeof(int)); /* 动态内存 扩大/缩小 * 1.成功分 ...
分类:
其他好文 时间:
2020-04-02 11:53:48
阅读次数:
72
C动态内存分配:malloc / realloc / calloc 1)void *malloc( size_t size ); malloc的参数是用户所需内存空间大小的字节数,不会对申请成功的内存初始化。 malloc 申请空间时并不是需要多少就申请多少,而是会多申请一些空间: a.多申请一个3 ...
分类:
编程语言 时间:
2020-03-15 09:25:51
阅读次数:
69
malloc void * malloc(size_t _Size); malloc函数在堆中分配参数_Size指定大小的内存,单位:字节,函数返回void *指针。 free void free(void *p); free负责在堆中释放malloc分配的内存。参数p为malloc返回的堆中的内存 ...
分类:
其他好文 时间:
2020-02-10 22:30:24
阅读次数:
85
0. 1. strcpy() function #include <string.h> char* strcpy(char* destination, const char* source); 2. Allocating Memory dynamically: (1) void* malloc(in ...
分类:
其他好文 时间:
2020-01-21 13:36:25
阅读次数:
85
动态内存管理 (1) malloc()、calloc()分配新的内存区域。calloc 在动态分配完内存后,自动初始化该内存空间为零,而 malloc 不初始化,里边数据是随机的垃圾数据。(2) realloc()调整已分配的内存区域。先判断当前的指针是否有足够的连续空间,如果有,扩大mem_add ...
分类:
编程语言 时间:
2020-01-17 21:05:10
阅读次数:
69
https://pintia.cn/problem-sets/12/problems/346 这个程序的算法不难,因为没有学透标准输入和输出,特别是gets()函数。如果不用getchar()读取多余的'\n',程序就会运行错误。 1 #include <stdio.h> 2 #include <s ...
分类:
其他好文 时间:
2020-01-16 21:48:57
阅读次数:
97
alloc:执行过程 (1)alloc (2)allocWithZone (3)class_createInstance (4)calloc (5)initIsa init: id _objc_rootInit(id obj){ // In practice, it will be hard to ...
分类:
其他好文 时间:
2020-01-07 16:34:39
阅读次数:
101