new TCHAR[10]为什么不能申请内存

tjsch 2008-09-15 07:35:43
我在一个程序中用想TCHAR * cnametemp=new TCHAR[10];申请内存,编译成功,不够调试时却发现实际只申请到了一个TCHAR内存,请各位帮忙看一看这是为什么呢,是不是那里设置有问题呢,用同样的方法申请其他类型的内存时结果也是一样的.
谢谢!
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
S_S_Ge 2011-03-21
  • 打赏
  • 举报
回复
学习到了 呵呵
tjsch 2008-09-15
  • 打赏
  • 举报
回复
问题找到了,是在下面的语句中把参数添错了,真是不细心呀!谢谢各位
zclever 2008-09-15
  • 打赏
  • 举报
回复
楼主把完整代码贴出来吧
yshuise 2008-09-15
  • 打赏
  • 举报
回复
不会的,申请错误会抛出异常,估计楼主自己调试理解有错。
jay的Fans 2008-09-15
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
TCHAR * cnametemp=new TCHAR[10];

cnametemp[0] = L'c';
cnametemp[1] = L'd';
cnametemp[2] = L'e';

for(int i = 0 ; i < sizeof(cnametemp) ; ++i)
{
wcout << cnametemp[i] << endl;
}

delete []cnametemp;

system("pause");
return 0;
}
wangdeqie 2008-09-15
  • 打赏
  • 举报
回复

//这么写
#include <iostream>
#include <malloc.h>
#include <Tchar.h>
using namespace std;

void main()
{
TCHAR* str=new TCHAR[10];
str[2]='a';
cout<<_msize(str)<<endl;
cout<<str[2]<<endl;
}
9527他大爷 2008-09-15
  • 打赏
  • 举报
回复
不会啊, 我就可以分配到10个char的内存
TCHAR *p = new TCHAR[10];

strcpy(p, "hello");
tjsch 2008-09-15
  • 打赏
  • 举报
回复
可在最后结果输出时也只得到最后一个结果呀,而且调试时展开前面的数组也不相其他数组那样可以看到每一个元素.
wangdeqie 2008-09-15
  • 打赏
  • 举报
回复

//可以用_msize检测下是否真的申请了10个内存空间,比如:
#include <iostream>
#include <malloc.h>
using namespace std;

void main()
{
char* str=new char[10];
str[2]='a';
cout<<_msize(str)<<endl;
}
baihacker 2008-09-15
  • 打赏
  • 举报
回复
不够调试时却发现实际只申请到了一个TCHAR内存

cnametemp的类型是指针,调试窗口只看到指向的第一个元素的值。

你用原始的数组类型看就不同了。

64,671

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧