AnsiString类型,与new结合使用是否安全

jiansee 2010-08-03 11:33:22
struct my_struct{
AnsiString ss;
};

然后:
int a = 9;
my_struct *t = new my_struct[a];
......
delete [] t;

如上,delete是否确定能释放t数组,且是否安全。
因为,我的印象中,AnsiString类型变量的大小是变化的,例如可以t[0].ss = "asdf",也可以t[0].ss = "a",那么在delete的时候,OS不管它是"asdf"还是"a"都能正确释放t数组吗?
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-08-03
  • 打赏
  • 举报
回复
如果只是在本进程使用这个结构,问题不大。但是跨了进程的话,就要出错了。
jiansee 2010-08-03
  • 打赏
  • 举报
回复
我想过用char[],但我又很想利用AnsiString的这种特性,即实际应用中这个字符串的长度跨度很大,可能几个字符,也可能上k,用AnsiString的话可以不浪费,而改用char[]则必须一律按上限长度设置为1k。

如果AnsiString在我主贴情况下确实不安全,那我该改还是得改,想先确定一下。
ccrun.com 2010-08-03
  • 打赏
  • 举报
回复
我建议你用char []来代替AnsiString做结构成员。当然,数组大小你自己来指定。
jiansee 2010-08-03
  • 打赏
  • 举报
回复
是的,但char动态数组作为结构体成员,结构体定义的数组又是动态的,delete几次嫌麻烦:)
如果AnsiString作为结构体成员,再由结构体定义动态数组,若delete该数组是安全的,我还是想就用AnsiString。
我不懂电脑 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiansee 的回复:]
我想过用char[],但我又很想利用AnsiString的这种特性,即实际应用中这个字符串的长度跨度很大,可能几个字符,也可能上k,用AnsiString的话可以不浪费,而改用char[]则必须一律按上限长度设置为1k。

如果AnsiString在我主贴情况下确实不安全,那我该改还是得改,想先确定一下。
[/Quote]

用char *可以动态分配长度。不过要注意delete掉

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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