VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1151|回复: 3

课程Windows 程序设计第31课作业的小问题

[复制链接]
31_avatar_middle
最佳答案
0 
在线会员 发表于 2020-5-13 11:36:30 | 显示全部楼层 |阅读模式
作业中第2种方式 【普通的C语言指针数组方式,通过函数参数传出】  请问要如何实现
我下载了课后答案 但是只有第3种方式的实现  (本人小白 没用过char** 这种格式)
我想看看第二种应该如何实现
第二种函数如下
  1. bool GetTempFolders(TCHAR** pszTempFolders, int* pOutCount)
  2. {
  3.         TCHAR* pWinTemp = new TCHAR[MAX_PATH];
  4.         TCHAR* pUserTemp = new TCHAR[MAX_PATH];

  5.         GetTempPath(MAX_PATH, pUserTemp);
  6.         GetWindowsDirectory(pWinTemp, MAX_PATH);
  7.         _tcscat_s(pWinTemp, MAX_PATH ,_T("\\Temp\"));
  8.         pszTempFolders[0] = pWinTemp;
  9.         pszTempFolders[1] = pUserTemp;
  10.         *pOutCount = 2;
  11.         return true;
  12. }
复制代码

我自己改的调用方式
  1.         TCHAR* pszTempFolders;
  2.         int pOutCount;
  3.         GetTempFolders(&pszTempFolders, &pOutCount);
  4.         for (UINT idx = 0; idx < pOutCount; idx++)
  5.         {
  6.                 TCHAR* pTempPath = *(&pszTempFolders + idx);
  7.                 if (!pTempPath || _tcslen(pTempPath) <= 0) continue;
  8.                 static CString strId;
  9.                 strId.Format(_T("%d"), idx + 1);
  10.                 m_ExplorerList.InsertItem(idx, strId);
  11.                 m_ExplorerList.SetItemText(idx, 1, pTempPath);
  12.                 delete[] pTempPath;
  13.         }
复制代码

但是上面这样写会报异常 ,继续运行的化能正常运行,我不明白为什么报异常
Run-Time Check Failure #2 - Stack around the variable 'pszTempFolders' was corrupted.
课程Windows 程序设计第31课作业的小问题
通过网络  把“project->配置属性->c/c++->代码生成->基本运行时检查 设置为默认值,就没有这样的异常了。
【我的环境vs2017默认值是 两者】
请问有没有别的办法在不改这个设定的前提下 改变代码然后正常运行  或者是正确的调用方式是什么




上一篇:MFC的botton控件
下一篇:asend 这是什么函数?有什么用?
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-5-18 14:20:30 | 显示全部楼层
pszTempFolders 没分配内存
  1. TCHAR  pszTempFolders[MAX_PATH] = {0};
复制代码
31_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-5-18 17:35:06 | 显示全部楼层
tony666 发表于 2020-5-18 14:20
pszTempFolders 没分配内存

能说的详细一点吗 把指针改成数组后 怎么向函数里传参呢课程Windows 程序设计第31课作业的小问题
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-5-19 09:31:58 | 显示全部楼层
不好意思,我审题不清。。。。
  1. TCHAR* pszTempFolders[2] = {0};
  2. int OutCount = 0;
  3. GetTempFolders(pszTempFolders,&OutCount);
复制代码
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-10 05:47

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表