タグ付けされた質問 「c」

Cは、システムプログラミング(OSおよび組み込み)、ライブラリ、ゲーム、クロスプラットフォームに使用される汎用プログラミング言語です。このタグは、ISO 9899標準で定義されているC言語に関する一般的な質問で使用する必要があります(特に指定のない限り、最新バージョン9899:2018。バージョン固有のリクエストには、c89、c99、c11などのタグも付けます)。CはC ++とは異なり、合理的な理由がない限り、C ++タグと組み合わせるべきではありません。

25
alloca()の使用が優れたプラクティスと見なされないのはなぜですか?
alloca()の場合のように、ヒープではなくスタックにメモリを割り当てますmalloc()。したがって、ルーチンから戻ると、メモリが解放されます。したがって、これは実際に、動的に割り当てられたメモリを解放するという私の問題を解決します。割り当てられたメモリの解放はmalloc()大きな頭痛の種であり、何らかの理由で失敗した場合は、あらゆる種類のメモリの問題につながります。 alloca()上記の機能にもかかわらず、使用が推奨されないのはなぜですか?
401 c  stack  malloc  allocation  alloca 

1
Definitive C Bookガイドとリスト
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 この質問は、コミュニティが管理する質の高い本のリストを収集しようとするものです。c さまざまなスキルレベルを対象としたプログラミング言語。 Cは複雑なプログラミング言語であり、オンラインチュートリアルを読んで外出先で習得することは困難です。多くの場合、包括的な本は言語を学ぶための最良の方法であり、良い本を見つけることが最初のステップです。不適切に書かれた本、さらに重要なことには、重大な技術的エラーを含む本を避けることが重要です。 承認された回答を編集して、質の高い本を追加するよう提案してください。おおよそのスキルレベルと、各本についての短い説明/説明を添えてください。(質問はロックされているため、新しい回答は受け入れられないことに注意してください。単一の回答がリストで維持されています) 書籍の選択、品質、見出し、要約、スキルレベル、その他間違っていると思われるものについては、自由に議論してください。ここCコミュニティで満足できると思われる本はリストに残ります。残りは定期的に削除されます。 CおよびC ++ユーザー協会(ACCU)によるレビューがある本の場合、それらのレビューへのリンクを本とともに追加する必要があります。 以下も参照してください。 のその他のC関連リソース c タグウィキ 同様のリスト C ++:決定的なC ++ブックガイドとリスト この質問は、削除された質問の監査2018の一部としてメタで議論されました。コンセンサスは、削除せずに積極的に維持することでした。
400 c 

16
静的リンクと動的リンク
特定の状況で動的リンクよりも静的リンクを選択する、またはその逆を選択する、説得力のあるパフォーマンス上の理由はありますか?私は次のことを聞いたり読んだりしましたが、その真実性を保証する主題については十分に知りません。 1)静的リンクと動的リンクの実行時パフォーマンスの違いは、通常は無視できます。 2)(1)は、プロファイルデータを使用してプログラムのホットパスを最適化するプロファイリングコンパイラーを使用している場合は当てはまりません。静的リンクを使用すると、コンパイラーはコードとライブラリコードの両方を最適化できるためです。動的リンクを使用すると、コードのみを最適化できます。ほとんどの時間がライブラリコードの実行に費やされている場合、これは大きな違いを生む可能性があります。それ以外の場合は、(1)が引き続き適用されます。

12
現在のCまたはC ++標準のドキュメントはどこにありますか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 StackаэтотвопросестьответынаStack Overflowнарусском:ГдевзятьстандартC ++? 多くの質問に対する答えは「標準」にあるようです。しかし、それはどこにありますか?できればオンライン。 グーグルは、プログラミングフォーラムでの議論の洪水に溺れているため、特にC標準では、場合によっては無駄に感じることがあります。 これを始めるために、これらは私が今探しているものですので、どこに良いオンラインリソースがありますか? C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 

11
浮動小数点値を比較することはどれほど危険ですか?
解像度に依存しない座標系のため、私はUIKit用途を知ってCGFloatいます。 しかし、私は、例えばかどうかを確認するたびにframe.origin.xされ0、それは私が病気に感じさせます。 if (theView.frame.origin.x == 0) { // do important operation } ではないCGFloatと比較する際に偽陽性に弱いですか==、<=、>=、<、>?これは浮動小数点であり0.0000000000041、たとえば不正確な問題があります。 されてObjective-C比較するときに内部的にこれを処理するか、ということが起こる可能origin.xゼロとして読み込むにはとは比較にならない0本当のよう?

6
整数が既知の値のセットを持つ2つの整数(両端を含む)の間にあるかどうかを判断する最速の方法
x >= start && x <= endCまたはC ++ よりも整数が2つの整数の間にあるかどうかをテストするより速い方法はありますか? 更新:私の特定のプラットフォームはiOSです。これは、ピクセルを特定の正方形の円に制限するボックスぼかし関数の一部です。 更新:受け入れられた回答を試した後、通常のx >= start && x <= end方法よりも1行のコードで桁違いに高速化しました。 更新:XCodeからのアセンブラーを使用した前後のコードは次のとおりです。 新しい方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

10
(実際の関数定義と比較して)パラメーターのない関数がコンパイルされるのはなぜですか?
私は、なぜそれがコンパイルされているのか混乱している誰かのCコードに出くわしました。わからないことが2点あります。 まず、関数プロトタイプには、実際の関数定義と比較してパラメーターがありません。次に、関数定義のパラメーターに型がありません。 #include <stdio.h> int func(); int func(param) { return param; } int main() { int bla = func(10); printf("%d", bla); } なぜこれが機能するのですか?いくつかのコンパイラでテストしましたが、問題なく動作します。

11
freeはどのようにして解放する量を知っていますか?
Cプログラミングでは、解放する引数として任意の種類のポインタを渡すことができますが、解放するために割り当てられたメモリのサイズはどのようにしてわかりますか?いくつかの関数へのポインターを渡すときはいつでも、サイズも渡す必要があります(つまり、10要素の配列は、配列のサイズを知るためにパラメーターとして10を受け取る必要があります)。ただし、サイズを渡す必要はありません。無料機能。なぜそうしないのか、そして同じ長さの関数を自分の関数で使用して、配列の長さの追加の変数をあちこち移動する必要がないようにすることができますか?
385 c  size  pointers  free 






14
Linuxでのpthread_createへの未定義の参照
https://computing.llnl.gov/tutorials/pthreads/から次のデモをWebから入手しました。 #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: creating thread %ld\n", t); rc = …

7
ループの順序が2D配列を反復するときにパフォーマンスに影響するのはなぜですか?
以下は、iとj変数を入れ替えた以外はほぼ同じ2つのプログラムです。どちらも異なる時間で実行されます。なぜこれが起こるのか誰かが説明できますか? バージョン1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } バージョン2 #include <stdio.h> #include <stdlib.h> main () { int i,j; …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.