如果你觉得需要使用realloc()——或者要做更多——考虑使用标准库中的vector。例如:
// 从输入中将词读取到一个字符串vector中
vector<string> words;
string s;
while (cin>>s && s!=".") words.push_back(s);
vector会视需要自动增长。
更多的例子与讨论,参见我的文章《将标准C++作为一种新的语言来学习》(Learning Standard C++ as a New Language),你可以在本人著作列表(my publications list)中下载到它。
我为什么必须使用一个造型来转换*void?
在C语言中,你可以隐式地将*void转换为*T。这是不安全的。考虑一下:
#include<stdio.h>
int main()
{
char i = 0;
char j = 0;
char* p = &i;
void* q = p;
int* pp = q; /* 不安全的,在C中可以,C++不行 */
printf("%d %d\n",i,j);
*pp = -1; /* 覆盖了从i开始的内存 */
printf("%d %d\n",i,j);
}
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/