[問題] strdup 的功用??

看板C_and_CPP (C/C++)作者 (不想想妳)時間14年前 (2011/09/22 21:24), 編輯推噓1(109)
留言10則, 6人參與, 最新討論串1/1
今天看到的一段程式碼不懂它的作用... 只知道他是複製一個同樣的大小的字串 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char * ptr; ptr = strdup("123456"); // ## ptr[2]='A'; printf("%s",ptr); system("PAUSE"); return 0; } 請問為什麼 ## 部分一定要加strdup ?? 為啥直接用 ptr = "123456"; 會出現segmentation fault?? 在 ptr = "123456"; 時,我印 ptr[2] 可以正確印出 3 感謝各位高手指教 :) -- What is broken is broken. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.167.74 ※ 編輯: Maxey 來自: 114.37.167.74 (09/22 21:24)

09/22 21:28, , 1F
置底文第四誡
09/22 21:28, 1F

09/22 21:30, , 2F
阿... 沒看到,也不能刪文= =
09/22 21:30, 2F

09/22 21:31, , 3F
那它的功用是啥??
09/22 21:31, 3F

09/22 21:37, , 4F
複製成一份非常數字串 並將此非常數字串回傳給你
09/22 21:37, 4F

09/22 21:42, , 5F
感謝兩位!!
09/22 21:42, 5F

09/22 21:44, , 6F
#include <string.h> 使用前先man一下
09/22 21:44, 6F

09/22 21:48, , 7F
指標只到第二個 所以是3
09/22 21:48, 7F

09/22 22:48, , 8F
還有一點 就是不要的時候要記得free~~
09/22 22:48, 8F

09/23 14:54, , 9F
補充樓上,其實函事裡面有用malloc,所以要記得free
09/23 14:54, 9F

09/23 21:59, , 10F
感謝各位:)
09/23 21:59, 10F
文章代碼(AID): #1EUpS6Lk (C_and_CPP)
文章代碼(AID): #1EUpS6Lk (C_and_CPP)