itoa删除char吗?

时间:2010-10-24 22:51:56

标签: c++ char delete-operator itoa

为什么这会给我一个内存错误?

char* aVar= new char;
itoa(2, aVar, 10);
delete aVar;

itoa会删除aVar吗?如何知道C ++函数是否删除指针,是否存在约定?

如果我这样做,则不会发生错误:

char* aVar= new char;
delete aVar;

1 个答案:

答案 0 :(得分:4)

itoa需要足够长的数组来保存整个值加上结尾的空字符。 在你的情况下,你需要分配至少2个字符,否则最后的空字符落在未分配的内存上。

请参阅documentation on itoa

对于纯C,sprintf应该是更便携的解决方案:

char aVar[2];
sprintf(aVar, "%d", 2);

(根据文档,itoa并非普遍适用。

如果您使用的是C ++,更好的方法是使用字符串流。请参阅此问题:Alternative to itoa() for converting integer to string C++?进行讨论。