問題タブ [free]

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.

0 投票する
13 に答える
249 参照

c - 自由質問

これはcで大丈夫ですか?

0 投票する
1 に答える
307 参照

c - ヒープと無料の宿題

最後の手段としてここに投稿します。私は完全に立ち往生しており、これをどこに持っていくべきかわかりません。この質問では、答えではなく方向性を探しています。

私は、実際には非常に一般的な課題のように見える在宅ワークの課題を持っています。質問は11 ページにあります。これは私の課題ではありませんが、Google で見つけたもので、私の課題と非常によく似ています。

私のインストラクターは、私たちが見る必要がある関連情報はヘッダービットであるというガイダンスを与えました.

以下を実行しているとします。free(0x400b010)

0x400b010が含まれています0x400b601c

この 16 進数を 2 進数に分割すると、特に最後のダブル ワードでは、次のようになります。

全体:

私が理解できることから、1cこれはこのメモリがすでに解放されていることを示しています。最後のビットが 0 であるためです。この場合、free の動作は未定義になります。

しかし、私の電車は正確ですか?私はこれを正しい方向に持っていますか?

0 投票する
4 に答える
1352 参照

c - free()エラー(valgrindを使用したデバッグ)?

私はこれらの構造体を持っています:

そして、アレイを作成しました

プログラムの最後に、メモリを解放したいのですが、関数は次のとおりです。

valgrindを使用してデバッグすると、valgrindは次のように言います。

そして、私がこれらのエラーを修正するのを手伝ってください、ありがとう。

0 投票する
6 に答える
10625 参照

c - C メモリ管理エラー?

これは私のCプログラムです:

gdb でデバッグすると、エラー メッセージは次のようになります。

valgrind メッセージは次のとおりです。

それらを修正するのを手伝ってください、ありがとう。

0 投票する
4 に答える
21054 参照

c - strtok とメモリ リーク

strtok() を使用して簡単な URL パーサーを作成しました。ここにコードがあります

ご覧のとおり、私は strtok() をよく使うので、URL を「スライス」できます。http や https 以外の URL をサポートする必要はないので、この方法ですべての問題が解決します。私の懸念は(これは組み込みデバイスで実行されています)-メモリを無駄にしていますか?のようなものを書くとき

そして、後で呼び出します

最初に保持されたポインタ ret->protocol はメモリに残りますか? 最初の呼び出しを tmp ポインターに設定し、ret->protocol を文字列の右側の部分に指定して strtok を呼び出し (2 番目の呼び出し)、次に free(tmp) を呼び出す必要があるのではないかと考えました。

strtok を使用する最良の方法は何ですか?

0 投票する
11 に答える
80391 参照

c - free はどのくらい解放するかをどのように知るのでしょうか?

C プログラミングでは、任意の種類のポインターを引数として free に渡すことができますが、free に割り当てられたメモリのサイズをどのように知るのでしょうか? 関数にポインターを渡すときはいつでも、サイズも渡す必要があります (つまり、10 要素の配列は、配列のサイズを知るためにパラメーターとして 10 を受け取る必要があります)。無料機能。配列の長さの余分な変数をカートに入れる必要がないように、独自の関数でこれと同じ手法を使用できますか?

0 投票する
4 に答える
293 参照

c - C誰かがここで何が起こっているのか教えてもらえますか?

ここで一体何が起こっているのか理解できません。私が期待しているのは、出力にはキーに1つの要素しかないということです。つまり、120バイトで0の位置だけを割り当てた場合、7つの要素があるということです。

出力:hithere \ one \ two \ three 0 1 2 3 4 5 6 7 hithere \ one \ two \ three 0 1 2 3 4 5 6 7

文字列は私が期待するとおりですが、追加した要素は0だけなので、後には0だけを出力する必要があると思いました。free [0]だけでなく、各スポットを解放できるようにする必要がありますが、free [i]を出力するforループに入れると、スタックダンプが発生します。

以下の応答からの初期化に関して、2ではなく1000のような配列が必要な場合、1,000個の0を入力せずにすべてを0に初期化するにはどうすればよいですか。

0 投票する
2 に答える
1786 参照

c - 多次元char配列?

私がやろうとしているのは、文字列の2次元配列を作成することです。次のセグメンテーション違反は即座に発生しますが、何が問題になっていますか?

0 投票する
9 に答える
18371 参照

c - Cでmallocされた2D配列をfree()する最適な方法

このようなもので作成された2次元配列があるとすると、

まず第一に、これはこのような配列を作成する正しい方法でさえありますか?ここでの落とし穴は、「高さ」と「幅」は実行時に設定されるものです。

これはうまくいくようですが、これはこの2Dアレイを解放するための最良の戦略です。free(funge)は間違っているように聞こえます。ここにある他のいくつかの投稿を見ていくと、各行を1つずつ無料にすることができると思いますか?

私はこのようなことを試みました、

ただし、これにより、ダブルフリーポインタ例外が発生します。これは、このメモリを管理する必要がないという意味ですか?私は、mallocされたメモリごとに、free()を呼び出す必要があるという印象を受けました。

0 投票する
4 に答える
3779 参照

c - 割り当てられた文字列で strtok() を使用しますか?

malloc された文字列で strtok を使用することについて知っておくべきことはありますか?

私のコードでは(一般的に)

wheregetline()は、char * を malloced メモリに返す関数です。とParse(dest, line)は、オンラインで解析を行い、結果を に保存する関数ですdest(以前に他の情報から部分的に埋められています)。

Parse()strtok()オンラインで可変回数呼び出し、いくつかの検証を行います。各トークン ( によって返されるものへのポインターstrtok()) は、自分が持っている数がわかるまでキューに入れられます。

次に、それらは dest の malloc された char** にコピーされます。

ここfree(line) で、dest の char*[] の各部分を解放する関数は、両方とも valgrind で次のように表示されます。

「アドレス 0x5179450 は、解放されたサイズ 38 のブロック内の 8 バイトです」

または似たようなもの。

トークンを char** に直接保存するのではなく、代わりにそれらのコピーを保存するようにコードをリファクタリングすることを検討しています (space == を strlen(token)+1 に malloc し、次に を使用しますstrcpy())。