假设我们有一个循环,以明确的顺序输入Associations 到 a :Dictionary
| d |
d := Dictionary new: 10.
1 to: 10 do: [ :i |
d add: i -> (i + 9 printStringBase: 20)
].
d
Run Code Online (Sandbox Code Playgroud)
当我评估这段代码时,我得到了Dictionary一个“扭曲”的顺序:
9 -> I
5 -> E
1 -> A
10 ->J
6 -> F
2 -> B
7 -> G
3 -> C
8 -> H
4 -> D
Run Code Online (Sandbox Code Playgroud)
每次Dictionary创建具有相同条目数据的 a 时,它都具有相同的顺序,所以我认为这是一个功能而不是错误..?
我使用 Pharo v9.0.21。
当我尝试运行我的程序时,我收到了这个警告和一些奇怪的错误。
rmi_pdu在下面的结构中包含一个我想访问的可变大小的数组。
struct rmi_message_s { /* Queue element containing Rmi message */
struct rmi_message_s *hnext;
struct rmi_message_s *hprev;
uint16_t gen_counter; /* Generation counter */
time_value send_time;
uint8_t retry_count;
TAILQ_ENTRY(rmi_message_s) rmi_message_next;
rmi_message_pdu rmi_pdu; /* contains a variable sized array */
};
typedef struct {
uint16_t zero;
uint16_t type;
uint8_t version;
uint8_t len;
uint8_t protocol;
uint16_t edge_port;
uint16_t core_port;
uint32_t connexus_id;
pi_ipv4_addr_t edge_addr;
pi_ipv4_addr_t core_addr;
uint16_t gen_count; /* Integer to identify a stale packet */
uint8_t payload[];
} rmi_message_pdu;
Run Code Online (Sandbox Code Playgroud)
问题是当我试图释放我动态分配的内存时。内容在那里,但free() …