gpt4 book ai didi

c++ - itoa 会删除字符吗?

转载 作者:行者123 更新时间:2023-11-30 02:11:02 26 4
gpt4 key购买 nike

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

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

itoa 是否删除了 aVar?如何知道 C++ 函数是否删除指针,是否有相关约定?

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

char* aVar= new char;
delete aVar;

最佳答案

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++?供讨论。

关于c++ - itoa 会删除字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com