利用malloc申请10KB内存,编写一个内存测试程序

利用malloc申请10KB内存,编写一个内存测试程序,第1张

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设置起点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10079648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存