hur.cn - 华软网

 热门搜索

指针和数组的问题

  作者:未知    来源:网络    更新时间:2011/9/4
有这么一个函数代码

CServItem *CServConfig::EnumServList()
{
SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if ( !hSCM ) {
return NULL;
}
CServItem *pServHeader = NULL, *pServPre = NULL, *pServNext = NULL;
LPENUM_SERVICE_STATUS pServStatus = NULL;
DWORD dwBytesNeeded = 0, dwServCound = 0, dwResume = 0, dwRealBytes = 0;
BOOL bRet = EnumServicesStatus(hSCM, SERVICE_WIN32, SERVICE_STATE_ALL, NULL, 0, &dwBytesNeeded, &dwServCound, &dwResume);
if ( !bRet && GetLastError() == ERROR_MORE_DATA ) {
dwRealBytes = dwBytesNeeded;
pServStatus = new ENUM_SERVICE_STATUS[dwRealBytes+1];
ZeroMemory(pServStatus, dwRealBytes+1);
bRet = EnumServicesStatus(hSCM, SERVICE_WIN32, SERVICE_STATE_ALL, pServStatus, dwRealBytes, &dwBytesNeeded, &dwServCound, &dwResume);
if ( !bRet ) {
CloseServiceHandle(hSCM);
return NULL;
}
}else{
CloseServiceHandle(hSCM);
return NULL;
}
pServPre = pServNext;
for( DWORD dwIdx = 0; dwIdx < dwServCound; dwIdx++ ) {
pServNext = new CServItem;
pServNext->m_strServName = pServStatus[dwIdx].lpServiceName;
pServNext->m_strServDispName = pServStatus[dwIdx].lpDisplayName;
pServNext->m_dwServStatus = pServStatus[dwIdx].ServiceStatus.dwCurrentState;
(pServHeader == NULL) ? (pServHeader = pServNext) : pServHeader;
(pServPre == NULL) ? (pServPre = pServNext) : (pServPre->m_pNext = pServNext, pServPre = pServNext);
}
CloseServiceHandle(hSCM);
delete [] pServStatus;
return pServHeader;
}
问题:指针和数组能通用?
pServStatus[dwIdx].lpServiceName;对于这个表示鸭梨很大


不好看懂的附带图片:

---华软 网友回答---
pServStatus[dwIdx].lpServiceName;对于这个表示鸭梨很大
-----------------------------
这个有什么问题吗?你的pServStatus本来就是动态分配的数组
---华软网友回复---
没有理解楼主的压力在哪儿
---华软网友回复---
“问题:指针和数组能通用?
pServStatus[dwIdx].lpServiceName;对于这个表示鸭梨很大”

多读点书,鸭梨会慢慢变小。
C++内存管理

---华软网友回复---
哎 懂了 new原来也能创建数组
---华软网友回复---
引用 3 楼 gibsonboy 的回复:
“问题:指针和数组能通用?
pServStatus[dwIdx].lpServiceName;对于这个表示鸭梨很大”

多读点书,鸭梨会慢慢变小。
C++内存管理


+1      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。