主题 : 【问题】Turbo C 下如何获得内存分配的长度?
新新航向
级别: 模拟名流
UID: 294
精华: 1
发帖: 7668
威望: 4 星
金钱: 92 浮游币
贡献值: 54 点
好评度: 12540 点
人气: 74 点
在线时间: 268(时)
注册时间: 2004-03-26
最后登录: 2023-04-11
楼主  发表于: 2006-08-04 18:28

【问题】Turbo C 下如何获得内存分配的长度?

如:
int *dat;
dat = (int *)calloc(1024, sizeof(int));
如果只以dat为函数参数,在函数内部有什么方法能得知dat所指内存的长度呢?
级别: 模拟之星
UID: 17726
精华: 0
发帖: 2664
威望: 0 星
金钱: 2638 浮游币
贡献值: 0 点
好评度: 5506 点
人气: 0 点
在线时间: 695(时)
注册时间: 2005-02-16
最后登录: 2011-09-13
沙发  发表于: 2006-08-07 15:40

malloc
虽然你我今生无缘,但我希望在来生再遇见你,即使那时你我已经忘了一切。



级别: 模拟之星
UID: 17726
精华: 0
发帖: 2664
威望: 0 星
金钱: 2638 浮游币
贡献值: 0 点
好评度: 5506 点
人气: 0 点
在线时间: 695(时)
注册时间: 2005-02-16
最后登录: 2011-09-13
板凳  发表于: 2006-08-08 10:07

原来经常去这里
http://www.vcok.com或者vcok.net
里面很详细。

现在有点忘了。反正大概就是
int *pInt=(int *)malloc(1000,sizeof(int)); //意思是开辟了一块内存,大小是1000个INT这么大,也就是相当于2000个字符的大小

之后比如你可以往这里写东西,比如
File *fp=fopen("1.txt","rw+");
之类。
之后把fscan(fp,pInt);
之类//我一直用MFC的,把C的忘的差不多了。

内存分配的长度:是无法取得的,是需要你自己在MALLOC的时候定义多大就是多大。不过一般不超过1MB。我也不清楚为什么,反正C的编程,内存无法定义特别大。可能是DOS编程本身的局限吧。

也可以自己写个函数进行判断。比如
long GetLenFromMemory(unsigned char *pUchr)
{
long i=0;
while(*(pUchr+i))
{
i++;
}
return(i);
}
也可以通过这个办法取得内存里面数据的长度。不过这不是内存的长度,只是里面存在了多长的数据!
虽然你我今生无缘,但我希望在来生再遇见你,即使那时你我已经忘了一切。



级别: 模拟之星
UID: 17726
精华: 0
发帖: 2664
威望: 0 星
金钱: 2638 浮游币
贡献值: 0 点
好评度: 5506 点
人气: 0 点
在线时间: 695(时)
注册时间: 2005-02-16
最后登录: 2011-09-13
地板  发表于: 2006-08-09 13:17

还是visual studio.net2003好。
虽然我有2005Z版。不过一直用2003。
嘿嘿!
虽然你我今生无缘,但我希望在来生再遇见你,即使那时你我已经忘了一切。