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的位置存储有总的内存的大小。
|