void* から char* への無効な変換」および「文字列定数から 'char*' への非推奨の変換」を解決 "
2022-02-12 07:21:04
まず、次のCプログラムで、動的なメモリ割り当てを使って文字列のコピーを作成し、メモリ割り当てに失敗した場合に、その作業を行うことにしましょう。
duplicate function
はヌルポインタを返します。
#include
Using
gcc
The compilation passes directly and prints the following result
Original String: testing.
Duplicated String: testing.
But when using
g++
compile, an error and warning will appear as follows
error: invalid conversion from 'void*' to 'char*' [-fpermissive]
warning: deprecated conversion from string constant to 'char*' [-Write-strings]
The reason for the error is that C++ is designed to be more secure than C and it does not automatically convert
void *
to other pointer types. The reason for the warning is that the program is trying to convert a string literal (which is a const char [] in C++, but a char [] in C) to a
char *
type, so if you want to use the
g++
to successfully compile this program and get the expected results, you can change the source program to
#include
gcc
関連
-
の 0x091f11c7 での未処理例外について。0xC0000005: アクセス違反の読み取り位置 0x0ab0f
-
C/C++共通エラーの概要
-
C++] error: 'const xxx' を 'this' 引数として渡すと修飾子が破棄される [-fpermissive] [C++] error: 'const xxx' を 'this' 引数として渡すと修飾子が破棄される。
-
C++ [エラー] 'std::string {aka std::basic_string<char>}' を 'char*' に変換できないエラー
-
警告: この関数では 'p' が初期化されていない状態で使用されることがあります。
-
sort(...)」への呼び出しに対応する関数がない、エラー
-
ランタイムエラー: 'std::logic_error' のインスタンスを投げた後に terminate が呼び出されました。
-
C++エラー:不明な型名
-
エラー: "" から非スカラー型 "" への変換
-
ベクター使用時、ベクター添え字が範囲外、その他類似のエラーが発生する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
戦闘機ゲームのC++実装(ソースコード)
-
error: 'vector' does not name a type
-
コンパイルエラー: 制御が非ボイド関数の末尾に達する可能性がある
-
C++ 文字列における c_str(), data(), copy(p,n) 関数の使用法
-
VCのグローバル変数が*.objで既に定義されている場合の問題点
-
C++のコンパイルエラーで修飾子が破棄される [-fpermissive] 。
-
C++ Error no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::string&)
-
"エラー:不完全なクラス型へのポインタは許可されません。"の前方宣言。
-
C++共通ライブラリ関数一覧
-
文字列がこのスコープで宣言されていない 問題の解決