|
作业中第2种方式 【普通的C语言指针数组方式,通过函数参数传出】 请问要如何实现
我下载了课后答案 但是只有第3种方式的实现 (本人小白 没用过char** 这种格式)
我想看看第二种应该如何实现
第二种函数如下
- bool GetTempFolders(TCHAR** pszTempFolders, int* pOutCount)
- {
- TCHAR* pWinTemp = new TCHAR[MAX_PATH];
- TCHAR* pUserTemp = new TCHAR[MAX_PATH];
- GetTempPath(MAX_PATH, pUserTemp);
- GetWindowsDirectory(pWinTemp, MAX_PATH);
- _tcscat_s(pWinTemp, MAX_PATH ,_T("\\Temp\"));
- pszTempFolders[0] = pWinTemp;
- pszTempFolders[1] = pUserTemp;
- *pOutCount = 2;
- return true;
- }
复制代码
我自己改的调用方式
- TCHAR* pszTempFolders;
- int pOutCount;
- GetTempFolders(&pszTempFolders, &pOutCount);
- for (UINT idx = 0; idx < pOutCount; idx++)
- {
- TCHAR* pTempPath = *(&pszTempFolders + idx);
- if (!pTempPath || _tcslen(pTempPath) <= 0) continue;
- static CString strId;
- strId.Format(_T("%d"), idx + 1);
- m_ExplorerList.InsertItem(idx, strId);
- m_ExplorerList.SetItemText(idx, 1, pTempPath);
- delete[] pTempPath;
- }
复制代码
但是上面这样写会报异常 ,继续运行的化能正常运行,我不明白为什么报异常
Run-Time Check Failure #2 - Stack around the variable 'pszTempFolders' was corrupted.
通过网络 把“project->配置属性->c/c++->代码生成->基本运行时检查 设置为默认值,就没有这样的异常了。
【我的环境vs2017默认值是 两者】
请问有没有别的办法在不改这个设定的前提下 改变代码然后正常运行 或者是正确的调用方式是什么 |
上一篇: MFC的botton控件下一篇: asend 这是什么函数?有什么用?
|