由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 怎么得到char *分配空间的大小?
相关主题
数组问题数组指针的问题
free(char *)的问题 (转载)unsigned long long
再问一个free()的问题谁来解释一下这个是compiler问题吗?
C里面一个被分配了内存的指针如何知道分配了多少?请教一个结构体占内存大小的问题
再问:关于多维数组的malloc指针的大小是 4 byte还是有赖于系统?
大家新年好。 请教一个 c interview questiongcc 优化不优化运算结果不一样?gcc 的 bug?
数组分配问题,求教在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
为什么要这样计算数中元素的个数?C puzzle 一日一题
相关话题的讨论汇总
话题: src话题: sizeof话题: char话题: max话题: 大小
进入Programming版参与讨论
1 (共1页)
v****s
发帖数: 1112
1
const int MAX = 500;
char *src = (char*)malloc(MAX*sizeof(char));
for( int i = 0; i printf("%d\n",sizeof(src));
结果是4,而不是500,而用 char src[MAX] 就可以得到这个正确的sizeof(src)。
char *src 和 char src[] 都是分配在heap上面的么? sizeof()函数具体是怎么实现
的?
谢谢!!
h*****0
发帖数: 4889
2
我觉得,这个sizeof是编译时决定的,不是运行时决定的……

【在 v****s 的大作中提到】
: const int MAX = 500;
: char *src = (char*)malloc(MAX*sizeof(char));
: for( int i = 0; i: printf("%d\n",sizeof(src));
: 结果是4,而不是500,而用 char src[MAX] 就可以得到这个正确的sizeof(src)。
: char *src 和 char src[] 都是分配在heap上面的么? sizeof()函数具体是怎么实现
: 的?
: 谢谢!!

w*******d
发帖数: 3714
3
sizeof又不能知道数组的大小,你以为是matlab啊。。。

【在 v****s 的大作中提到】
: const int MAX = 500;
: char *src = (char*)malloc(MAX*sizeof(char));
: for( int i = 0; i: printf("%d\n",sizeof(src));
: 结果是4,而不是500,而用 char src[MAX] 就可以得到这个正确的sizeof(src)。
: char *src 和 char src[] 都是分配在heap上面的么? sizeof()函数具体是怎么实现
: 的?
: 谢谢!!

z****e
发帖数: 2024
4
sizeof(src)是不是指针的大小呀?
size of pointer is different from size of the memory chunk right?
X****r
发帖数: 3557
5
对,sizeof(指针)返回这个指针变量本身的大小,不是它指向的内容或数组的大小。
sizeof(数组)返回整个数组的大小。

【在 z****e 的大作中提到】
: sizeof(src)是不是指针的大小呀?
: size of pointer is different from size of the memory chunk right?

v****s
发帖数: 1112
6
read carefully and try it by yourself, man.

【在 w*******d 的大作中提到】
: sizeof又不能知道数组的大小,你以为是matlab啊。。。
v****s
发帖数: 1112
7
对!这个我上面已经验证过了。
所以,sizeof(指针)返回4,说明我用的是32位系统。
我想知道的是,这个sizeof()是怎么implement的?而且区别了array和pointer?

【在 X****r 的大作中提到】
: 对,sizeof(指针)返回这个指针变量本身的大小,不是它指向的内容或数组的大小。
: sizeof(数组)返回整个数组的大小。

X****r
发帖数: 3557
8
sizeof是编译的时候就确定的。编译器自然知道你的某个类型占多少空间。
数组和指针本来就是不同的类型。

【在 v****s 的大作中提到】
: 对!这个我上面已经验证过了。
: 所以,sizeof(指针)返回4,说明我用的是32位系统。
: 我想知道的是,这个sizeof()是怎么implement的?而且区别了array和pointer?

v****s
发帖数: 1112
9
ok, that makes sense!
thanks!

【在 X****r 的大作中提到】
: sizeof是编译的时候就确定的。编译器自然知道你的某个类型占多少空间。
: 数组和指针本来就是不同的类型。

L***n
发帖数: 6727
10
不是,compile time 决定

【在 v****s 的大作中提到】
: 对!这个我上面已经验证过了。
: 所以,sizeof(指针)返回4,说明我用的是32位系统。
: 我想知道的是,这个sizeof()是怎么implement的?而且区别了array和pointer?

v****s
发帖数: 1112
11
thanks, updated!

【在 L***n 的大作中提到】
: 不是,compile time 决定
f*****Q
发帖数: 1912
12
记得C99不一定是compile time了,具体不记得了。给有兴趣的提个醒。

【在 L***n 的大作中提到】
: 不是,compile time 决定
t*****g
发帖数: 1275
13
那是对variable length array,C99可以支持了。 对指针还是返回指针大小。

【在 f*****Q 的大作中提到】
: 记得C99不一定是compile time了,具体不记得了。给有兴趣的提个醒。
t******r
发帖数: 88
14
char src[]是在栈上的
你这个问题,你把src-4打出来看看,就会发现是个比MAX大一点点的数

【在 v****s 的大作中提到】
: const int MAX = 500;
: char *src = (char*)malloc(MAX*sizeof(char));
: for( int i = 0; i: printf("%d\n",sizeof(src));
: 结果是4,而不是500,而用 char src[MAX] 就可以得到这个正确的sizeof(src)。
: char *src 和 char src[] 都是分配在heap上面的么? sizeof()函数具体是怎么实现
: 的?
: 谢谢!!

1 (共1页)
进入Programming版参与讨论
相关主题
C puzzle 一日一题再问:关于多维数组的malloc
关于malloc/free和循环大家新年好。 请教一个 c interview question
数组定义的时候,分配空间了么?数组分配问题,求教
初学C,对什么该free一直搞不明白为什么要这样计算数中元素的个数?
数组问题数组指针的问题
free(char *)的问题 (转载)unsigned long long
再问一个free()的问题谁来解释一下这个是compiler问题吗?
C里面一个被分配了内存的指针如何知道分配了多少?请教一个结构体占内存大小的问题
相关话题的讨论汇总
话题: src话题: sizeof话题: char话题: max话题: 大小