关于网友提出的“ sbrk错误测试,errno转换等问题”问题疑问,本网通过在网上对“ sbrk错误测试,errno转换等问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: sbrk错误测试,errno转换等问题描述:
#include
#include
#include
main()
{
void *p=sbrk(1000000000*2);
if(p == (void*)-1)
{
printf("Memory:%m\n");
perror("hello");
printf("::%s\n",strerror(errno));
}
}
错误显示:

我的问题是:
1.为什么编译器说我用strerro()转换后是int型,我man strerro却说是char*
2.我企图用sbrk申请过大内存报错,但是即便超出了整形最大值,仍然不行,这不科学
希望大神指明方向!感激不尽
解决方案1:
1、你要#include
2、我的很正常的报错了,估计你的是64位系统吧,另外看下你的limit设置,sbrk并不会真的申请内存,只是偏移下虚拟地址
:~/test$ ./a.out
Memory:Cannot allocate memory
hello: Cannot allocate memory
::Cannot allocate memory