在C/C++中怎么验证连续空间分配成功
在C/C++中如何验证连续空间分配成功
在C/C++中如何验证连续空间分配成功呢?
#define NULL 0
#define AllOCSIZE 1000
char allocbuf[ALLOCSIZE];
char *allocp=allocbuf;
char *alloc(int n)
{
if(allocp+n<=allocbuf+ALLOCSIZE)
{
allocp+=n;
return(allocp+n);
}
else
retrn(NULL);
}
各位编程达人支个招啊!再次谢谢了!!!
------解决方案--------------------
看一下malloc源码?
------解决方案--------------------
你是指逻辑上的还是物理上的?
------解决方案--------------------
malloc 函数一般会有返回值,不同的系统不一样,如果是嵌入式低级系统,malloc不出来内存的症状一般是设备重启。高级点的系统,malloc函数做的完善,malloc到最后是不会引发重启事故的,一般会有返回值返回错误值。你只需判断返回值即可。
------解决方案--------------------
刚看清楚你是想看到连续的内存的分配,malloc 在物理上分配连不连续,是由操作系统决定的,一般是不连续的,这个问题我们不用去关心,因为你用的时候,已经在逻辑方面变成连续的了。
------解决方案--------------------
ALLOCSIZE 没有定义(注意l是大写的),retrn 应该是 return
------解决方案--------------------
坐等大神
------解决方案--------------------
物理上的没法验证
逻辑上判断返回值就行了
在C/C++中如何验证连续空间分配成功呢?
#define NULL 0
#define AllOCSIZE 1000
char allocbuf[ALLOCSIZE];
char *allocp=allocbuf;
char *alloc(int n)
{
if(allocp+n<=allocbuf+ALLOCSIZE)
{
allocp+=n;
return(allocp+n);
}
else
retrn(NULL);
}
各位编程达人支个招啊!再次谢谢了!!!
------解决方案--------------------
看一下malloc源码?
------解决方案--------------------
你是指逻辑上的还是物理上的?
------解决方案--------------------
malloc 函数一般会有返回值,不同的系统不一样,如果是嵌入式低级系统,malloc不出来内存的症状一般是设备重启。高级点的系统,malloc函数做的完善,malloc到最后是不会引发重启事故的,一般会有返回值返回错误值。你只需判断返回值即可。
------解决方案--------------------
刚看清楚你是想看到连续的内存的分配,malloc 在物理上分配连不连续,是由操作系统决定的,一般是不连续的,这个问题我们不用去关心,因为你用的时候,已经在逻辑方面变成连续的了。
------解决方案--------------------
ALLOCSIZE 没有定义(注意l是大写的),retrn 应该是 return
------解决方案--------------------
坐等大神
------解决方案--------------------
物理上的没法验证
逻辑上判断返回值就行了