c语言如何统计malloc开辟了多少空间

问题大致如下:
int * aaaaa()
{
int *p;

p=(int *)malloc(100*sizeof(int));

return(p)
}

void bbbbb(int *p)
{
不传递参数

如何获取p所指的连续空间,开辟了多少int型空间?

}

假设你i开辟了num个空间,那么前num个空间的值一般是相同的,第num+1个值和第num个一般不同(当然这么认为是很危险的,因为不同也是概率问题,只是大部分情况下不同)
这么求malloc开辟了多少空间
可以直接拷贝运行

# include <stdio.h>
# include <malloc.h>
int *aaaaa();
void main()
{
int *p;
p=aaaaa();
int i=0,elem;
int num=0;
elem=*p;
while(*(p+i)==elem)
{
i++;
num++;
}
printf("*************num==========%d\n",num);
}

int *aaaaa()
{
int *p;
p=(int *)malloc(100*sizeof(int));
return(p);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-09
绝对不可能
如果你要这样做
请使用std::vector
或者 boost::array
这类经过类包装的数组

或者自己对数组做些标记表示结束
第2个回答  2013-08-09
在aaaa里面,这样定义p :static int *p。
第3个回答  2013-08-09
不行吧,好像获取不了。
第4个回答  2013-08-09
strlen() .追问

strlen()不是获取字符串的长度吗?
能具体点吗?怎么使用?

相似回答