掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
charとunsigned charとdeleteについて (ID:68254)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下のようにnewするときとdeleteするときでchar*の型が違っている場合 問題はないでしょうか? void Func(unsigned char*); char* c = new char[100]; strcpy(c, "xyz"); //引数としてunsigned char*を要求される関数を呼ぶ。 unsigned char* uc = reinterpret_cast<unsigned char*>(c); Func(uc); //char*をunsigned char*に強制キャストしたものを配列delete delete[] uc; charとunsigned char/singned charは型としては別のものだそうですが、 上記のように、Cの文字列操作関数がchar*を要求しているからまずは char*で文字列を組み立て、別の関数がunsigned char*を要求しているから char*をunsigned char*にキャストして、使い終わったから unsigned char*のままdelete[]という動作は問題ないものでしょうか? また、reinterpret_castはよほどのことがない限り使わない方がよいと Effective C++などには書かれているのですが、 char*からunsigned char*またはsigned char*にキャストする際は、 static_castだとコンパイルが通りません。 この場合のreinterpret_castしかないのでしょうか? よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.