我有一个如下所示的指针:
Traceback (most recent call last):
File "source_file.py", line 7, in <module>
mydict[j].append(k)
AttributeError: 'int' object has no attribute 'append'
在围绕基本指针地址计算进行了大量搜索之后,我找到了以下解决方案:
char *p=malloc(94)
此公式如何工作?谁能解释这个解决方案?
答案 0 :(得分:2)
先决条件:
此说明:
size = 1 << e;
平均向左移动1,相当于1 * (2^e)
左移。
在此说明中:
base = p & ˜(size-1);
p & ˜(size-1)
意味着在p与大小的一元补码((size-1)
)之间进行二进制和(&)。
示例:
allocation space
------------
| | 0001 1111
------------
| . |
| . |
| . |
------------
| | p = 0001 0100
------------
| . |
| . |
| . |
------------
| | 0001 0000
------------
e = log(16) = 4
size = 1 << 4 = 0001 0000
size - 1 = 0000 1111
~(size -1) = 1111 0000
base = 0001 0100 & 1111 0000 = 0001 0000