我需要一个动态分配的二维对象数组。
我声明了一个指向对象指针的静态指针,如下所示:
server_session **server_session::Pglvcl_sess;
有一种方法可以动态填充对象数组的数组:
int server_session::createSession()
{
int ret = -1;
// looks for the next available position on the array
for (int i = 0; i <= MAX_SESSION; i++)
{
// if there's an available position, instantiates an object
if (server_session::Pglvcl_sess[i] == NULL)
{
// instantiates object
server_session::Pglvcl_sess[i] = new server_session();
ret = i;
break;
}
}
return ret;
}
我应该malloc
server_session::Pglvcl_sess
变量吗?
初始化它的正确方法是什么?
修改
应用程序在启动时执行此方法,这可以吗?
void server_session::initializeSessions()
{
server_session::Pglvcl_sess = ( server_session * * ) malloc(MAX_SESSION * sizeof(server_session));
for (int i = 0; i <= MAX_SESSION; i++)
{
if (server_session::Pglvcl_sess[i] != NULL)
{
server_session::Pglvcl_sess[i] = NULL;
}
}
}
答案 0 :(得分:3)
任何不使用
的理由Vector<Vector<server_session> >
让它为你做动态分配和管理?
答案 1 :(得分:1)
如果你真的想要一个数组而不是一个向量,请使用std :: tr1 :: array(或std :: array或boost :: array,都是一样的)。