使'插入字节'和'删除字节'通过带有正/负偏移的'插入字节'工作

时间:2011-01-31 00:26:56

标签: c

我有两个基本相同的操作:

insert_bytes(from, count)
delete_bytes(start, stop) -> delete_bytes(from, count)

insert_bytes实现示例:

unsigned char* new_bytes = (unsigned char*)malloc((old_length+count)*sizeof(unsigned char));
memcpy(new_bytes, old_bytes, from); // negative value can't go to from here
memcpy(new_bytes+count, old_bytes+from, old_length-from); 
return new_bytes+from; // pointer to write

是否有任何安全的方法可以实现delete_bytes作为对insert_bytes的调用(具有负偏移)而无需编写5-6行正/负值检查?

1 个答案:

答案 0 :(得分:1)

不...你的删除功能不知道前面有多少malloc'ed。

  • 如果你制作了一个C ++(这被标记为C)类,你可以封装当前大小。
  • 你可以创建一个函数:resize(from,current_size,delta)可以工作。