多线程堆内存分配问题
多线程堆内存分配问题
int GetIdxFileName(char ***stridx)
{
int nIdxCnt = 0, c = 0;
long hfind = 0;
_finddata_t stFind;
hfind = _findfirst("d:\\myprojects\\superseeker\\superseeker\\*.idx", &stFind);
if (hfind == -1)
{
return hfind;
}
++nIdxCnt;
while (_findnext(hfind, &stFind) != -1)
{
++nIdxCnt;
}
_findclose(hfind);
*stridx = new char*[nIdxCnt];
hfind = _findfirst("d:\\myprojects\\superseeker\\superseeker\\*.idx", &stFind);
*stridx[c] = new char[128];
strcpy(*stridx[c], stFind.name);
++c;
while (_findnext(hfind, &stFind) != -1)
{
*stridx[c] = new char[128];
strcpy(*stridx[c], stFind.name);
++c;
}
_findclose(hfind);
return nIdxCnt;
}
当在主线程中调用此函数时一切正常, 可是从主线程创建的线程调用此
函数时 *stridx = new char*[nIdxCnt]; 不能达到预期的效果。
比如说 nIdxCnt = 38; *stridx = new char*[nIdxCnt];能正常返回
可是在 *stridx[4] = new char[128]时就会出非法访问错。而0,1,2,3
没有问题.
是怎么回事???
请指点, 急死了, 谢谢!!!