我目前正在尝试为队列数据结构设计一个公共 API,并调整函数以更改其大小。我的第一个意图是通过以下方式做到这一点:
typedef struct queue queue;
/**
* Resizes a given queue.
*
* Changes the size of the queue passed as a parameter.
* The content of the resized queue prior to the lesser
* of new and old sizes is left unchanged.
*
* Returns:
* 0 - on success
* -1 - on error and the content of the original queue is left unchanged
*/
int queue_resize(queue * queue_ptr, size_t new_size);
问题是我阅读了合同,realloc
内容如下:
该
realloc
函数返回一个指向新对象的指针(它可能与指向旧对象的指针具有相同的值),如果无法分配新对象,则返回一个空指针。
重新分配函数返回一个新对象并回收旧对象是一种常见的方法吗?因此,在这种情况下,我应该重新设计int queue_resize(queue *queue_ptr, size_t);
以进行queue * queue_resize(queue *queue_ptr, size_t);
相应的合同更改。