【发布时间】:2015-12-11 20:04:58
【问题描述】:
我想将此宏重写为 c++ 函数。
#define SAFE_BUFFER_DELETE(buf) { if(buf != NULL) { buffer_delete(buf); buf = NULL; } }
其他信息http://paste.ubuntu.com/13940691/ abot .头文件
void buffer_read(LPBUFFER buffer, void * buf, int bytes) {
thecore_memcpy(buf, buffer->read_point, bytes);
buffer_read_proceed(buffer, bytes);
}
void buffer_delete(LPBUFFER buffer) {
if (buffer == NULL) {
return;
}
buffer_reset(buffer);
int size = buffer->mem_size;
int pool_index = buffer_get_exac_pool_index(size);
if (pool_index >= 0) {
BUFFER** buffer_pool = normalized_buffer_pool + pool_index;
buffer->next = *buffer_pool;
*buffer_pool = buffer;
} else {
free(buffer->mem_data);
free(buffer);
}
}
【问题讨论】:
-
什么阻止了这样做?
-
buf可以接受哪些类型? -
真正的问题是什么?
-
顺便说一句,没有必要检查
NULL。delete使用空指针是无操作的(假设这是您在buffer_delete函数中所做的)。 -
SAFE_BUFFER_DELETE- 一厢情愿。