簡體   English   中英

itoa刪除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個字符,否則最后的空字符落在未分配的內存上。

請參閱itoa上文檔

對於純C, sprintf應該是一個更便攜的解決方案:

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

(據文件所述, itoa並非普遍適用)。

如果您使用的是C ++,更好的方法是使用字符串流。 看到這個問題: 用於將整數轉換為字符串C ++的itoa()的替代方案? 討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM