使用malloc开辟的空间,如果使用超过了这个空间程序是会挂掉还是继续执行下去呢,如果执行下去会怎么执行下去呢
越界读取可能会挂掉,越界写一般都挂掉
不知道你这个问题是否已经解决, 如果还没有解决的话:
malloc函数是C语言中stdlib.h头文件下用于申请动态内存的函数,其返回类型是申请的同变量类型的指针,其基本用法如下:
typename *p=(typename*)malloc(sizeof(typename));
以申请一个int型变量和一个结点型node为例:
int *p=(int *)malloc(sizeof(int));
node *p=(node *)malloc(sizeof(node))
这个写法的逻辑是:以需要申请的内存空间大小(即sizeof(node))为malloc函数的参数,这样,malloc函数就会向内存申请一块大小为sizeof(node)型的空间,并且返回指向这块空间的指针。但是此时这个指针是一个未确定类型的指针void *,因此需要把它强制转化为node *型的指针,因此在malloc之前加上node *,这样等号右边就得到了一个node *的指针;如果申请失败,会返回NULL
如果只是申请一个链表结点的话是不会失败的,失败一般是发生在使用malloc申请了较大的动态数组,即
int *p=(int *)malloc(1000000*sizeof(int));