LPCTSTR 怎么释放?急 在线等

tj_aj 2005-05-30 02:38:16
LPCTSTR a = new TCHAR[10];
delete [] a; //error C2665:




LPCTSTR是不是必须要new才能用,否则内存不能确保?
既然new出来,那么怎么释放它?


谢谢。。。。。
...全文
481 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
whyglinux 2005-05-30
  • 打赏
  • 举报
回复
>> LPCTSTR 怎么释放?

如果你使用的是一个不符合C++标准的编译器(比如VC6),因为存在着 const 指针向 void 指针的转换,确实会出现这个问题(这种情况下可以通过将其转换为非const指针来实现delete内存)。但是C++标准明确规定了可以delete一个const指针不需要事先将指针转换为非const指针,因此如果你用一个较新版本的编译器编译就不存在这个问题了。你的程序是正确的。

>> LPCTSTR怎么用啊?用它有什么好处?

LPCTSTR通常用在函数的参数中,用以表明在函数中不会对字符串进行改变,如
int WINAPI MessageBox (HWND, LPCSTR, LPCSTR, UINT) ;

好处就是可以通过宏 UNICODE 的定义与否,来实现 wchar_t 和 char 类型切换,使程序可以方便地产生UNICODE和单字节两种版本。
viewpl 2005-05-30
  • 打赏
  • 举报
回复

首先,我觉得没必要用什么临时的CString,应该尽量避免

其次CString可以用GetBuffer成员或运算符LPCTSTR直接得到内容。
tj_aj 2005-05-30
  • 打赏
  • 举报
回复
因为这个pa必须要是全局变量,所以导致a 也要全局,但是a的值是从一个byte流 取出,这个流是别的地方控制,所以pa内存不能确保,我是先用一个临时CString接受byte流中的一个数据,然后new LPCTSTR,把CString 的内容给这个pa
viewpl 2005-05-30
  • 打赏
  • 举报
回复

TCHAR a[10] = {"hello!"};
LPCTSTR pa = a;

这样不是很好嘛,为什么要用new 和delete
tj_aj 2005-05-30
  • 打赏
  • 举报
回复
下班前结贴
tj_aj 2005-05-30
  • 打赏
  • 举报
回复
我刚才这样用就可以:
LPCTSTR a = new TCHAR[str.Getlength()];
a = str; //str是一个临时的CString



//释放时候
TCHAR* aa = (TCHAR*)a;
delete []aa;



看来还是 tuxw(醉书生) 强啊。我这样用不会出问题吧?
tuxw 2005-05-30
  • 打赏
  • 举报
回复
如果你非要这样用,可以将它转化为非常指针

delete [] (LPTSTR)a;

中间使用时也要转换
tj_aj 2005-05-30
  • 打赏
  • 举报
回复
不好意思,没更新,原来有不少回复了。


好像大家意见不一致啊。

我目前可以new,不能delete。。。。。
但是不new,内存能确保吗?它是怎么使用的?
tj_aj 2005-05-30
  • 打赏
  • 举报
回复
LPCTSTR怎么用啊?用它有什么好处?没有人回答?这个应该是个很普通的问题吧。
useresu 2005-05-30
  • 打赏
  • 举报
回复
呵呵,学习了
useresu 2005-05-30
  • 打赏
  • 举报
回复
我没用过TCHAR,
如果仅是LPCTSTR,
你的delete是没错的
QunKangLi 2005-05-30
  • 打赏
  • 举报
回复
LPTSTR p = new TCHAR[10];
delete [] p;
//LPCTST中的C是const之意,效果等于:
#ifdef UNICODE
typedef const char * LPCTSTR ;
#else
typedef const w_char *LPCTSTR ;
#endif
tuxw 2005-05-30
  • 打赏
  • 举报
回复
LPCTSTR 是常量指针,不能用来 new 的, 因为你无法更改它指向的内容,new 出来没什么用处,

70,012

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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