首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >itoa会删除char吗?

itoa会删除char吗?
EN

Stack Overflow用户
提问于 2010-10-25 06:51:56
回答 1查看 504关注 0票数 1

为什么会出现内存错误?

代码语言:javascript
复制
char* aVar= new char;
itoa(2, aVar, 10);
delete aVar;

itoa会删除aVar吗?如何知道C++函数是否删除了指针,这方面有什么约定吗?

如果我这样做了,那么错误就不会发生:

代码语言:javascript
复制
char* aVar= new char;
delete aVar;
EN

回答 1

Stack Overflow用户

发布于 2010-10-25 06:53:57

itoa需要足够长的数组来保存整个值加上末尾的空字符。在您的示例中,至少需要分配2个字符,否则最后的空字符将落在未分配的内存上。

请参阅documentation on itoa

对于纯C语言,sprintf应该是一个更可移植的解决方案:

代码语言:javascript
复制
char aVar[2];
sprintf(aVar, "%d", 2);

(根据文档,itoa并不是普遍可用的)。

如果您使用的是C++,更好的方法是使用stringstream。有关讨论,请参阅此问题:Alternative to itoa() for converting integer to string C++?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4010891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档