如何初始化vector
struct DeviceInfo
{
char strName[64];
char szID[3];
char strIP[16];
};
vector <DeviceInfo*> devInfo
for ( int i = 0; i < 8; ++i)
{
DeviceInfo * device;
sprintf(device-> strName, "aaa ");
sprintf(device-> szID, "001 ");
sprintf(device-> strIP, "109.52.22.5 ");
devInfo.push_back(device);
}
最后push_back出错,请问是哪里导致的错误那?
我将for循环去掉又没有问题了
[解决办法]
你的device没有分配内存啊。
[解决办法]
没有分配内存 在前面new一个内存就行了 不过后面要注意delete
[解决办法]
还有 sprintf(device-> szID, "001 ");
超出szID[3]范围
[解决办法]
for ( int i = 0; i < 8; ++i)
{
DeviceInfo * device;
sprintf(device-> strName, "aaa ");
sprintf(device-> szID, "001 ");
sprintf(device-> strIP, "109.52.22.5 ");
devInfo.push_back(device);
}
DeviceInfo * device;//这是一个指针,指向那里?
所以下面的
sprintf(device-> strName, "aaa ");
sprintf(device-> szID, "001 ");
sprintf(device-> strIP, "109.52.22.5 ");
都是非法的
-----------------
在循环外申请内存空间:DeviceInfo devices[8];
sprintf(devices[i].strName, "aaa ");