代码改变世界

随笔档案-2012年07月

最近遇到的HashTable的愚蠢问题

2012-07-16 10:23 by Demote, 162 阅读, 收藏,
摘要: 1. 删除表头第一个元素时直接将头指针指向NULL,导致hash冲突链断裂 HashChain[idx] = NULL;2. 从Hash表的冲突链中删除元素时,只将该元素的前后指针改为 if(cur->hash_prev) { cur->hash_prev->hash_next = cur->hash_next; } if(cur->hash_next) { cur->hash_next->hash_prev = cur->hash_prev; }导致若该元素处于冲突链第一项时,由于表头指针仍然指向该表项,使得并没有真正删除,导致未知Bug.应该 阅读全文

Linux下大文件处理

2012-07-10 12:40 by Demote, 418 阅读, 收藏,
摘要: Linux下当文件大小超过2G时,使用open或者fopen后无法进行正常操作,可以使用O_LARGEFILE选项使文件位置描述符变为64b,从而可以正常操作(与之相对的offset也需要为loff_t)。或者可以自定义_FILE_OFFSET_BITS为64位,如在文件最前端(在包含头文件前)定义#define _FILE_OFFSET_BITS 64或者在编译的时候使用-D_FILE_OFFS... 阅读全文