【发布时间】:2019-07-23 03:48:58
【问题描述】:
假设我需要这样做
我有一个函数,比如:
int dbs_access(chat* name, char* sql, void* outbuf, unsigned int buflen, int* outresutl)
{ do some query here and output result}
我想从DBS获取一些数据,所以我需要一些缓冲区并调用上面的函数,因为我不知道表中有多少条记录,所以我不能使用数组,我不想要使用 new 或 malloc 来获取一些内存,因为在这里释放内存可能是一个问题。因此我想使用矢量。但我不确定 c++ 标准是否能保证这一点,有什么看法吗?
unsigned int count;
dbs_access(...,"select count(*) from..",&count,sizeof(count),...)
std::vector records[count];
assert(records.size()==count)
dbs_access(...,"select from..",&records[0],records.size(),...)
【问题讨论】:
-
你可能想要
std::vector<char>那里 - 你需要给它一个类型,并为 UTF16 字符等提供灵活性,records.size()*sizeof(records[0]),因为size()给出了元素的数量,而不是总大小。 -
你是对的,这是一个错误。
-
附注:如果记录的数量非常大,上述使用向量的方法可能会给您带来问题,因为向量保证在连续块中。在这种情况下,列表或双端队列可能是更好的选择。免责声明:不确切知道您的要求和限制。
标签: c++