malloc之后要記得memset


下面的代碼buf的輸出並非是"helloworld",而是"屯屯屯屯屯妄膮\x14y沞helloworld".
strcat是將前者字符串的'\0'去掉,加上后面的字符串.而malloc之后不進行memset操作,buf的值實際上是亂碼,而非空字符串.

char *buf = (char*)malloc(11); strcat(buf, "helloworld");

正確的代碼應該是如下的那樣:

char *buf = (char*)malloc(11);
memset(buf, 0, 11);
strcat(buf, "helloworld");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM