int p = (int )malloc(sizeof(int )100);
while(p)
{
p = (int )malloc(sizeof(int )100);
}
你参考下这个
#include
//编译预处理命令,包含头文件
#include
//同上
int
main()//主函数,程序执行从这里开始
{
while(1)//循环
malloc(10241024100);//循环体,malloc函数,动态分布内存函数,你这里表示分配10241024100个字节的内存空间
}//不过,你这是个死循环,运行必然会死机
malloc函数可以从指定的内存起点开始分配内存,可以使用void malloc(size_t size, void start)函数来设置起点。start参数指定了起点,size参数指定了要分配的内存大小。malloc函数会从start开始分配size大小的内存,并返回指向分配内存的指针。
C语言中malloc是动态内存分配函数。
函数原型:void malloc(unsigned int num_bytes)。
参数:num_bytes 是无符号整型,用于表示分配的字节数。
注意:当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
实现malloc的方法:
首先我们要确定所采用的数据结构。一个简单可行方案是将堆内存空间以块的形式组织起来,每个块由meta区和数据区组成,meta区记录数据块的元信息(数据区大小、空闲标志位、指针等等)。
数据区是真实分配的内存区域,并且数据区的第一个字节地址即为malloc返回的地址 。
malloc是分配动态数组存储空间的函数,引用它必需包含头文件"malloch"或"stdlibh",malloc的作用是分配指定字节个内存空间,并返回该内存空间的首地址,但在赋值前必需进行强制类型转换。至于之后p其实就可以作为普通数组进行使用了,你的程序中少了free(p);,要将malloc的空间进行释放。
把函数类型换成 char 型就可以了。
全程序如下,并输出 free 前后 malloc 的 实际 内存大小。
#include <stdioh>
#include <stdlibh>
#include <stringh>
char getmemory(char p) {
p=(char )malloc(100);
strcpy(p,"helloworld");
return p;
}
int main( ) {
char str=NULL;
str = getmemory(str); // 这样调用
printf("%s\n",str);
printf("allocated str size is: %d\n", _msize(str) );
free(str);
printf("after free, str size is: %d\n",_msize(str) );
return 0;
}
// 内部函数 _msize(str) 测出 实际分配的内存大小。
用 p 的方法也可以,但脑子要多转一个弯--有点费解。
以上就是关于利用malloc申请10KB内存,编写一个内存测试程序全部的内容,包括:利用malloc申请10KB内存,编写一个内存测试程序、c语言malloc函数的使用,求解这个代码的意思,要详详细细的、malloc设置起点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)