由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 关于 c malloc的一个问题
相关主题
[合集] C里面return 1代表失败,return 0代表成功,对么?free(char *)的问题 (转载)
vector析构的时候怎么办?array allocation in c
c里面有什么函数可以菜鸟请教C问题
被ptmalloc坑了再问一个free()的问题
一个面试题[合集] C代码这么写,居然没有错。
gcc 编译的时候要包括 header source file 吗?数组问题
How to have another func call printf with va_arg list ?[合集] 怎样创造一个 segv
一个简单的问题怎么得到char *分配空间的大小?
相关话题的讨论汇总
话题: malloc话题: int话题: libc话题: include话题: 存储
进入Programming版参与讨论
1 (共1页)
j*****y
发帖数: 1071
1
#include
#include
int main()
{
int * p = (int *)malloc(100);
printf("%d\n", *(p - 1));
return 0;
}
这个 code是想理解系统是怎么知道多少memory 该被释放的,当
我们调用 free的时候。 有的说是在 p-1的位置存储有总的内存的大小。
可是这里的输出是 105. 我觉得应该是 104 阿
多谢.
j*a
发帖数: 14423
2
没听说过这个:在p-1的位置存储有总的内存的大小

【在 j*****y 的大作中提到】
: #include
: #include
: int main()
: {
: int * p = (int *)malloc(100);
: printf("%d\n", *(p - 1));
: return 0;
: }
: 这个 code是想理解系统是怎么知道多少memory 该被释放的,当
: 我们调用 free的时候。 有的说是在 p-1的位置存储有总的内存的大小。

j*****y
发帖数: 1071
3
看来是用 hash table来存储 每个 malloc 出来的内存的大小?

【在 j*a 的大作中提到】
: 没听说过这个:在p-1的位置存储有总的内存的大小
m*******l
发帖数: 12782
4
it could
no guarantee

【在 j*a 的大作中提到】
: 没听说过这个:在p-1的位置存储有总的内存的大小
t****t
发帖数: 6806
5
as long as the system can calculate the memory size, you don't, and shouldn'
t have to worry about it, unless you are designing the libc.

【在 j*****y 的大作中提到】
: #include
: #include
: int main()
: {
: int * p = (int *)malloc(100);
: printf("%d\n", *(p - 1));
: return 0;
: }
: 这个 code是想理解系统是怎么知道多少memory 该被释放的,当
: 我们调用 free的时候。 有的说是在 p-1的位置存储有总的内存的大小。

X****r
发帖数: 3557
6
+1 what thrust said
and if you are curious about the implemention, many libc have source code
available.

【在 j*****y 的大作中提到】
: 看来是用 hash table来存储 每个 malloc 出来的内存的大小?
i*****o
发帖数: 1714
7
因为在size上面还有一个隐藏的指针说这个block的其它东西。

★ 发自iPhone App: ChineseWeb 7.7

【在 j*****y 的大作中提到】
: #include
: #include
: int main()
: {
: int * p = (int *)malloc(100);
: printf("%d\n", *(p - 1));
: return 0;
: }
: 这个 code是想理解系统是怎么知道多少memory 该被释放的,当
: 我们调用 free的时候。 有的说是在 p-1的位置存储有总的内存的大小。

i**h
发帖数: 424
8
I've seen it and used it for debugging before. However, it depends on the
runtime. Apparently not any part of the C standard.
o*****g
发帖数: 40
9
I guess it is a one bit flag. Since the last bit will never be used.
r********n
发帖数: 7441
10
指针本身占一个整数位 4 byte ?

【在 j*****y 的大作中提到】
: #include
: #include
: int main()
: {
: int * p = (int *)malloc(100);
: printf("%d\n", *(p - 1));
: return 0;
: }
: 这个 code是想理解系统是怎么知道多少memory 该被释放的,当
: 我们调用 free的时候。 有的说是在 p-1的位置存储有总的内存的大小。

1 (共1页)
进入Programming版参与讨论
相关主题
怎么得到char *分配空间的大小?一个面试题
mingw gcc 没有输出结果gcc 编译的时候要包括 header source file 吗?
c++ 问题 (转载)How to have another func call printf with va_arg list ?
最新某公司onsite面试题 (转载)一个简单的问题
[合集] C里面return 1代表失败,return 0代表成功,对么?free(char *)的问题 (转载)
vector析构的时候怎么办?array allocation in c
c里面有什么函数可以菜鸟请教C问题
被ptmalloc坑了再问一个free()的问题
相关话题的讨论汇总
话题: malloc话题: int话题: libc话题: include话题: 存储