如何复制矢量在c?

在c和向量/列表之前的日子里,当他们需要存储更多数据时,他们如何扩展数组的大小?
典型的C代码如下所示:

void* newMem = realloc(oldMem, newSize);
if(!newMem)
{
    // handle error
}

oldMem = newMem;

注意,如果realloc失败,那么它返回零,但旧的内存仍然有效,这种典型的使用导致内存泄漏:

oldMem = realloc(oldMem, newSize);
if(!oldMem)
{
    // handle error
}

不幸的是,这是很常见的;

还要注意,没有什么特别的C矢量/列表。类似的结构可以在C中实现,只是语法(和错误处理)看起来不同。例如参见LodePNG’s std :: vector for C的类似物

http://stackoverflow.com/questions/4694401/how-to-replicate-vector-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何复制矢量在c?