社区
C语言
帖子详情
LPCTSTR 怎么释放?急 在线等
tj_aj
2005-05-30 02:38:16
LPCTSTR a = new TCHAR[10];
delete [] a; //error C2665:
LPCTSTR是不是必须要new才能用,否则内存不能确保?
既然new出来,那么怎么释放它?
谢谢。。。。。
...全文
481
13
打赏
收藏
LPCTSTR 怎么释放?急 在线等
LPCTSTR a = new TCHAR[10]; delete [] a; //error C2665: LPCTSTR是不是必须要new才能用,否则内存不能确保? 既然new出来,那么怎么释放它? 谢谢。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 出来没什么用处,
zip、zip压缩文件、添加多级文件路径如何处理?C++上是不是很难搞?别
急
到这里是不是已经快要想砸电脑、换编程语言了,别
急
。 其实这些都是可以通过一些逻辑处理来实现的,有时候需要用到递归调用。 当然如果觉得麻烦,也没事。 为了解决这种尴尬的问题,我索性自己写一个类, 将这些...
VC++常用数据类型及其操作详解(非常经典,共同分享)
(2)L
PC
STR等 中的C指Const,T表示TCHAR模式即可以工作在ANSI下也可UNICODE SHORT usigned 整型 其他UCHAR、UINT、ULONG、ULONGLONG、USHORT为无符号相应类型 ...
C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息
优缺点 优点 内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。 内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通...
mfc小工具开发之定时闹钟之---多线程
急
线程同步
工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win...
VC++数据类型转换大全
L
PC
TSTR
)str; BSTR变量 Cpp代码 BSTR bstrValue = ::SysAllocString(L "程序员" ); char * buf = _com_util::ConvertBSTRToString(bstrValue); ...
C语言
70,012
社区成员
243,258
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章