問題タブ [strdup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - strdup の繰り返しによるメモリ リーク
linux_dirent 構造体 (d) から取得したファイル名の配列を作成しています。ループの各反復で、ファイル名は次を使用して取得されます
これへのポインタが配列に追加されます。
ポインターの配列には、指す有効なメモリが必要なため、これを行うことはできません。
配列を最後に使用しfree(d_entry)
た後に使用すると、d_entry の最後のインスタンス用に strdup/malloc によって割り当てられたメモリのみが解放されます。
Valgrind はメモリ リークを確認します。
これに対処する方法はありますか、または memcpy を使用してファイル名を別のバッファーに移動してから、配列にポインターを作成することを検討する必要があります。
コアループ:
c - フレックスでの strdup() の使用
重複した文字列を bison ファイルに送信したい。
私のフレックスファイルでは、このように使用します
これは正しいことですか?または、コードの下のように使用する必要があります。
c++ - strdup\Function の再定義には既に本体があります
Qt Creator IDE で Source Engine 2013 コードを動作させるための小さなプロジェクトに取り組んでいます。私の最終的な目標は、それを CMake プロジェクトに変換して、Valve の制限付き VPC システムを破棄することですが、それがどのように機能するかはまだ正確にはわかりません。そのため、簡単な手順を実行しています。
私は MSVC++ 2013 コンパイラーでコンパイルすることに慣れているので、それを使用していますが、この最後の問題に遭遇しました。対処方法がわかりません。私が最初にやろうとしていることは、意図したコンパイラーで正しくコンパイルされない場合、明らかに間違っていることであり、まだコードを変更する必要はありません。
バルブには、char *__cdecl _strdup( const char *string ) を持つこの memoverride.cpp があります。これをコメントアウトすると、コードは正常にコンパイルされるため、これが私が扱っている最後の問題です。
この関数「オーバーライド」から、次の 2 つのエラーが発生します。
C2084: 関数 'char MemAlloc_StrDup(const char ) には既に本体があります
C2732: リンケージ指定が、'MemAlloc_StrDup' の以前の指定と矛盾しています
必要なコンパイラ オプション、除外する必要がある既定のライブラリ、またはこれを回避するために使用する必要があるプリプロセッサの定義を知っている人はいますか? Visual Studio でコードをコンパイルしてみました。抑制されたスタートアップ バナーを無効にして、渡されたすべてのオプションを確認しましたが、すべて試してみましたが、違いはないようでした。
それで、誰か何か考えがありますか?
どんな情報でも大歓迎です、ありがとう!
c++ - const char * to char * 私の場合
const char *
C/C++ では問題が多く、への変換がほとんど禁止されていることはわかっていますが、 に変換しchar *
なければならないと思う状況に陥っています。const char *
char *
を使用してテキスト ファイルから文字列を文字列として取得し、c_str
この文字列を変更したいと考えています。ただし、問題はc_str
string を に変換することconst char *
です。この場合に使用するのは良い選択strdup
ですか、それともこれを行う上でより良いアイデアはありますか?
c++ - バイソンバイソンフレックスstrdupの文字列
ubuntu linux vmPlayerで動作するflex-bisonプロジェクトがあります。問題は、bison ファイルで int-string キャスト用に文字列と int のマップを使用しようとしているのですが、ファイル extra.y でエラーが発生することです。
エラーが表示されます:
..ヘルプ ??
c++ - C++ 関数の型エラーの値は常に NULL
私は常に自分の機能を実行する必要があります。標準ライブラリを使用できません。
ここに My_cpy 、 my_len 、 my_strdup 関数があります。私のためにそれをチェックしてください。簡単だと思いますが、この機能に問題があります。ページの最後にエラーを表示しました。明らかだと思います。さらに、これはC ++です
どうもありがとう。
コード:
この関数にエラーがあります。どうすればこの問題を解決できますか?
エラー (アクティブ) 型 "void *" の値を使用して、型 "char *" のエンティティを初期化することはできません
私はそれを書きました:
しかし、今は p の問題です。常に NULL です。