[英]Why does itoa() modify the passed char[] instead of returning char[]?
[英]Does itoa delete char?
為什么這會給我一個內存錯誤?
char* aVar= new char;
itoa(2, aVar, 10);
delete aVar;
itoa
刪除了aVar
嗎? 如何知道C ++函數是否刪除了指針,是否存在約定呢?
如果我這樣做,那么不會發生錯誤:
char* aVar= new char;
delete aVar;
itoa
需要數組足夠長的時間來保存整個值加上空字符。 在您的情況下,您需要分配至少2個字符,否則最后的空字符落在未分配的內存上。
對於純C, sprintf
應該是一個更便攜的解決方案:
char aVar[2];
sprintf(aVar, "%d", 2);
(據文件所述, itoa
並非普遍適用)。
如果您使用的是C ++,更好的方法是使用字符串流。 看到這個問題: 用於將整數轉換為字符串C ++的itoa()的替代方案? 討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.