char *my_strdup(const char *src)
{
int sz = strlen(src) + 1; // メモリ確保サイズ:文字数 + 1(1 for 終端ヌル文字)
char *dst = new char[sz]; // メモリ確保
while( (*dst++ = *src++) != '\0' ) {// ヌル文字までコピー
}
return dst - sz; // dst は sz だけ進んでいるので、sz を引いたアドレスを返す
}
解説:
char *my_strdup(const char *src)
{
int sz = strlen(src) + 1; // メモリ確保サイズ:文字数 + 1(1 for 終端ヌル文字)
char *dst = new char[sz]; // メモリ確保
char *dst0 = dst; // 先頭アドレスを保存
while( (*dst++ = *src++) != '\0' ) {// ヌル文字までコピー
}
return dst0; //
}
前: | 次: