[過去ログ] C言語なら俺に聞け 162 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
203
(1): (ワッチョイ 71cf-Gt6m) 2023/12/07(木)16:19 ID:QzDrEJVi0(2/2) AAS
>>196
自分はUNIX Cプログラミング(いわゆるライオン本)で勉強して、めちゃくちゃ為になったけど、さすがにこれは古すぎる
詳解UNIXプログラミング 第3版は間違いのない名著
ふつうのLinuxプログラミング 第2版はLinux向けだし初心者向け
Cで仕事をするようにはならないかもだけど、「ふつうの~」を理解出来て自分のものにすることがCを学ぶ意義だな
204
(1): (ワッチョイ 66ab-XaJC) 2023/12/07(木)16:23 ID:5AmCTrxW0(1/2) AAS
>グラフィック系のソフトを使う上で不便なところを楽したい
ソフト側でスクリプト等がサポートされてなければ
できることは連続するショートカットを 1プッシュでまとめて出す
キーロガー&再生系とか Joy2Key みたいなキーコード送出系ぐらいしか思い浮かばん
205
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/07(木)17:03 ID:FWY3NSUg0(2/3) AAS
>>196
具体的に対象になってるソフトの名前は言える?

モダンな設計の Windows 用ソフトが外部から制御するために公開するインターフェイスは
Component Object Model の技術をベースにしていることが多くて、
高度な開発環境の補助を得ながら使う分には便利なんだが
C から使おうとするとすごく面倒くさい。 (出来なくはないけど。)

ソフトが外部に対してインターフェイスを公開するのではなく
制御用のスクリプト言語を内蔵している場合もあるので
C でのプログラミングに詳しくなってもあまり役に立たないこともある。

もしも外部に対してインターフェイスを用意していないなら
省9
206
(5): (ワッチョイ c55f-tBUZ) 2023/12/07(木)17:15 ID:ggcXWkJv0(1/4) AAS
関数のサイズというのは、関数の引数のサイズと同じと考えて良いのでしょうか?
中身に1万行使ってる関数があるとして、その1万行は関数のサイズとは全然関係ないんでしょうか?

構造体はなんとなく変数のバイト数の足し算なんだなってわかるけど、関数がピンとこないです・・・
207: (ワッチョイ f1bb-Gt6m) 2023/12/07(木)17:18 ID:Dmh4B19g0(1) AAS
プリプロセッサメタプログラミングを覚えてからc言語の開発は楽になったわ
前は同じようなデータ構造でたくさんモジュール作ってたからな
208
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/07(木)17:34 ID:FWY3NSUg0(3/3) AAS
>>206
関数をデータとして扱うことはないので「大きさ」は定義されない。
C の言語仕様的には「関数はオブジェクトではない」という扱い。

関数に対して呼び出し以外の操作をする方法はない。
関数ポインタで関数の場所を指すということは出来るが、
型システム的にちょっと特殊な扱いになっていて関数ポインタ経由で値を取り出したりも出来ない。

もちろん実際にはなんらかの形でメモリ上には存在するし、
長いプログラムは大きい可能性が高いけど。
実際にどうなってるのかは生成された機械語を見ればいいんでね。
209: (ワッチョイ 915b-rn9t) 2023/12/07(木)17:41 ID:VEE9aIzl0(1) AAS
>>206
質問文が謎すぎて、何を聞きたいのか解釈できない

関数のサイズって言ってるのがビルドしてできた実行ファイルのファイルサイズの事なら、コードの量が多ければ当然サイズは大きくなる
210: (ワッチョイ c55f-tBUZ) 2023/12/07(木)17:41 ID:ggcXWkJv0(2/4) AAS
>>208
ポインタのアクセス条件でメモリのサイズ・型が明確になっていること
とあったので、関数ポインタもサイズや型が明確でないといけないなら
ちゃんとわかっとかないといけないと思ったのですが、関数の扱いはわかってる人から見ても特殊なんですね
ありがとうございます
211: (ワッチョイ 1ec3-yDrh) 2023/12/07(木)18:04 ID:Kvlx+aNw0(1) AAS
>>206
あなたはどういう文脈で「関数のサイズ」が気になった・話題になったの?プアな組み込みとか?
俺は「関数のサイズ」が気になった・話題になった覚えがない
まぁコンパイル後のコード量かなぁ、関数の行数は大きく関係する
引数はスタックに積むけど「関数のサイズ」とは言わない気がする
212
(1): (ワッチョイ 66ab-XaJC) 2023/12/07(木)18:19 ID:5AmCTrxW0(2/2) AAS
サイズ云々は
インクリメントしたときにどんだけ(何バイト)進むのかが確定してる型でないとポインタにならない
→ じゃ関数ポインタって 関数のサイズ(≒ コンパイル後の機械語化されたバイナリのサイズ) を知ってるのか?

こういう思考の流れかな?
213
(1): (ワッチョイ c55f-tBUZ) 2023/12/07(木)19:14 ID:ggcXWkJv0(3/4) AAS
>>212
まさにそれです!
関数ポインタを配列に格納した時インクリメントしたら何バイト進むのか分かってないといけないのではと
214
(1): (ワッチョイ 8a71-yDrh) 2023/12/07(木)19:46 ID:Avn/NPEq0(1) AAS
>>213
その状況で必要になるのは関数のサイズじゃなくて関数ポインタのサイズや
それは他のポインタと同じ、64bitPCなら8バイト

仮定の話として、もし「関数ポインタの配列」ではなく「関数の配列」が作成できるような言語仕様にするなら、関数のサイズも決めないといけなかっただろうね
215: (ワッチョイ c55f-tBUZ) 2023/12/07(木)19:58 ID:ggcXWkJv0(4/4) AAS
>>214
言われてみたらたしかにそうですねなんでポインタなのに普通の変数のように考えてしまってたんだろう・・・
216
(1): (ワッチョイ 9140-JrwL) 2023/12/07(木)21:12 ID:fQltjmnX0(1) AAS
void*使えるやん
217
(2): (ワッチョイ 65ff-WD8q) 2023/12/07(木)21:34 ID:NYiehhGh0(4/4) AAS
>>203
ありがとうございます。
>>204
メインのソフト除いて二窓三窓しているので欲しい機能だけ載せたソフトを自作したいなと。
>>205
204へのレスと同じです。
猫でも分かるは説明していない単語が出てきたり、UI作成の手順をトレースできなかったり
わからない人向けではなく分かる人向けの解説のようで個人的には合いませんでした。
218
(3): はちみつ餃子◆8X2XSCHEME (ワッチョイ 656b-1gjz) 2023/12/08(金)03:48 ID:tzfGEsy80(1) AAS
>>216
関数ポインタは void* に格納可能であると保証してないし、関数ポインタがオブジェクトを指すポインタより大きかったり表現が異なっていたりする環境はある。
出来る環境でなら使うのが悪いわけではないけど移植性は犠牲になる。
219
(1): (ワッチョイ b501-8qzv) 2023/12/08(金)06:53 ID:Mdse7dEX0(1/2) AAS
>>218
>関数ポインタは void* に格納可能であると保証してないし
そんなことありえるの?
220
(1): (ワッチョイ 1e6d-ja4y) 2023/12/08(金)07:01 ID:g0YSKcXt0(1) AAS
near ポインタモデル?だったかの
変数のアドレッシングサイズと
プログラムカウンタのアドレッシングサイズが違うやつ
221
(1): (ラクッペペ MM3e-VttM) 2023/12/08(金)07:38 ID:qsjd2ZYcM(1) AAS
ミディアムモデルとかコンパクトモデルとか
まぁ過去の話だわな
222: (スップ Sdea-b4p5) 2023/12/08(金)07:57 ID:m+qJyEe4d(1) AAS
関数のサイズは関数のポインタをアドレス順にソートすれば求められる
そのサイズ分を実行可能領域にコピーすれば当然実行もできるよ
dllインジェクションとかでたまに使われる
223: (スップ Sd0a-Cw2Y) 2023/12/08(金)08:01 ID:ClTGg8d6d(1) AAS
>>217
業務で使ってるような信頼性のソフトを自作するつもりなのか
一人で?予算は?期間は?
まあ無理だろ
単純にメモリの大きなPCに買い替えればいいんじゃない
224
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)09:53 ID:B2zBKDAb0(1/6) AAS
>>217
マイクロソフトが出している公式のチュートリアルは C++ が基礎だけど
考え方としては C でも同じなのでそのへんは適当に読み替えながら……
外部リンク:learn.microsoft.com
Win32 API は C で使ってもそんなに不便ではないように出来てる。

特に最も基礎のこのへんの例示のコードは (C++ とは書いてあるが) たぶん C としてコンパイルさせても通る。
外部リンク:learn.microsoft.com

必要な知識の分量は初心者が想像するよりずっと多いと思う。
分かりやすいドキュメントがあったとしても (そして無いこともしばしばある!) 分量は減らないので
分量というハードルをクリアするのは単純に学習量しかないし、
省5
225
(1): (ワッチョイ 6646-wNAC) 2023/12/08(金)10:13 ID:20YRNN5F0(1) AAS
>>224
Cコンパイラに、C++ -> C トランスレート機能あるの?
226: (ワッチョイ 66ab-XaJC) 2023/12/08(金)10:26 ID:vLixVDpZ0(1/2) AAS
API はほとんど C インターフェースで
C++をベターCとして利用してて C++のクラスの機構はほぼ使ってない

(GDI+ とかAPIがはなっから C++ インターフェースの奴は別)
227
(1): (ワッチョイ 9140-JrwL) 2023/12/08(金)10:34 ID:faKtyhh20(1/2) AAS
>>218
ねえよ
228
(1): (アウアウウー Sa21-wVFe) 2023/12/08(金)10:50 ID:k3Bpg+TDa(1/4) AAS
ぶっちゃけGDI+もCから使えるけどね
229
(1): (ワッチョイ 66ab-XaJC) 2023/12/08(金)10:53 ID:vLixVDpZ0(2/2) AAS
>>228
あれ Cインターフェース居るのか 最終的にはCOMになってるんやっけ?
230: (ワッチョイ b501-8qzv) 2023/12/08(金)11:03 ID:Mdse7dEX0(2/2) AAS
>>220-221
なんかそういうのあったかも
231: (ワッチョイ 1163-8qzv) 2023/12/08(金)11:04 ID:VEgZ7oNC0(1/5) AAS
あれはPascalの呼出ではなかったかな
232: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)11:27 ID:B2zBKDAb0(2/6) AAS
>>229
gdiplus.dll 自体は関数群を置いてあるだけっぽい。
それをラッパークラスで覆って C++ から使いやすくしているだけ。
233
(1): (ワッチョイ 6548-WD8q) 2023/12/08(金)12:03 ID:7hcazM9a0(1) AAS
>>224
兼任ですが個人事業主でお金と時間はそれなりに自由に使えます。
3〜5ヶ月くらいはまとまった時間を取ることも可能です。
公式チュートリアルは参考にはなりますが読みやすいかと言われると微妙ですね。

知識はもちろん身につけたいのですが、そこまでの道筋は他人のコードを読む方がやはり良いのでしょうか?
書籍やサイトなどでアプリの形になるまでのチュートリアルなどは無いのでしょうか。
234: (アウアウウー Sa21-wVFe) 2023/12/08(金)12:17 ID:k3Bpg+TDa(2/4) AAS
Win32APIというよりそれ以前の
C言語の知識が足りてないんじゃないのかな
235: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)13:05 ID:B2zBKDAb0(3/6) AAS
>>233
何を学べば良いかすらわからないときのとっかかりとして
他人のコードを読む (何がわかってないかはわかる) ことを勧めたまでで、
良い資料があるならそれを読むにこしたことはないよ。
良い資料がないことも多いという現実はあるけど。

私は公式チュートリアルは良いほうだと思う。
知らないことを書いてあるんだからある程度は読みづらいこともあるのは当たり前のことで、
どれを読んだって似たようなもんじゃないかな。
専門的な内容をスラスラ読めるほうがおかしいでしょ。
236
(1): (ワッチョイ 8a80-yDrh) 2023/12/08(金)13:11 ID:0BufPgxy0(1) AAS
さてはオメー
ふらっとC#スレで他人のコードの読み方とか延々聞いてたヤツだな?
237: (アウアウウー Sa21-/D3x) 2023/12/08(金)13:15 ID:o54AonyOa(1) AAS
>>206
関数もメモリにロードされるのわからず?
関数はただのマシンコードなんだからここから始まりますよ、というラベルがついてるだけだぞ
そして呼ばれた時はそこへジャンプするだけ
関数ポインタはそのマシンコードのラベルのアドレスを保持しているだけ
ポインタ以前にコンピュータの仕組みからやった方が良さそう
プログラム格納方式とか聞いたことない?
238: (アウアウウー Sa21-wVFe) 2023/12/08(金)13:31 ID:k3Bpg+TDa(3/4) AAS
>>236
なんちゃらGPTがここでこっそり質問してたら笑う
239: (ワッチョイ 66cf-tBUZ) 2023/12/08(金)13:36 ID:SLmq2FCH0(1) AAS
>>219>>227
ググってみたらどうも>>218が正しいらしい
240: (ワッチョイ 9140-JrwL) 2023/12/08(金)15:42 ID:faKtyhh20(2/2) AAS
だからねえよ
そいつが勘違いしてるか、使い方が悪いかだろ
241: (ワッチョイ 5df0-/D3x) 2023/12/08(金)16:03 ID:abnVL6FT0(1/3) AAS
>>206
構造体もプログラムからしたらただのメモリ領域の塊だぞ
そこに変数とかいう概念はない
構造体のメンバのオフセットでその位置を指定して書き込んだり読み込んだりするだけ
その時のオフセットの計算に利用されるのが型
変数宣言すると構造体全体サイズのメモリ領域がスタックに確保される
mallocで確保されるとヒープに確保されてそのアドレスが返る
ただそれだけ
242: (アウアウウー Sa21-wVFe) 2023/12/08(金)16:08 ID:k3Bpg+TDa(4/4) AAS
関数を malloc で確保するにはどうすれば良いですか?って言いそう
243: (ワッチョイ 5df0-/D3x) 2023/12/08(金)16:21 ID:abnVL6FT0(2/3) AAS
ちなみにメモリにロードされた関数の領域は現代のOSならば当然ながらアクセス不可能
昔はプログラム領域にアクセスできてその中のコードを動的に書き換えるという荒技をやってた人もいるらしいが
244: (ワッチョイ 5df0-/D3x) 2023/12/08(金)16:24 ID:abnVL6FT0(3/3) AAS
ちなみにメモリ領域にマシンコードを生成してそのメモリ領域のマシンコードを即時実行するということはできる
これをJITという
最近のスクリプト言語ではこの手法がかなり用いられている
やり方は普通にメモリにマシンコードを生成して実行可能属性を付加、各種CPUキャッシュをクリアしてから
関数ポインタにキャストして実行するだけ
245: (ワッチョイ 1163-8qzv) 2023/12/08(金)16:31 ID:VEgZ7oNC0(2/5) AAS
メモリ保護機構が動いて実行できないと思う
16ビットリアルモードOSだったらできたと思うが
246: (スッップ Sd0a-GtvU) 2023/12/08(金)16:51 ID:9cA1ls6dd(1) AAS
mprotectとかVirtualProtectで実行可能にすればできる
247
(3): (ワッチョイ 1163-8qzv) 2023/12/08(金)17:06 ID:VEgZ7oNC0(3/5) AAS
しかし、それだと任意のコード実行が自由自在ってことになって・・・
まずくない?
248: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)17:24 ID:B2zBKDAb0(4/6) AAS
>>247
許可を与えないと実行できないから問題にならないよ。
許可を与えられる前には実行できないんだから
外から注入されたものが自分で許可を出すということは出来ない。
249
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)17:24 ID:B2zBKDAb0(5/6) AAS
>>247
許可を与えないと実行できないから問題にならないよ。
許可を与えられる前には実行できないんだから
外から注入されたものが自分で許可を出すということは出来ない。
250
(2): (ワッチョイ 1163-8qzv) 2023/12/08(金)17:35 ID:VEgZ7oNC0(4/5) AAS
セキュリティって、身内も信じちゃまずいと思うよ
251: (ワッチョイ eaad-snvD) 2023/12/08(金)20:25 ID:Bb4hYLfH0(1/2) AAS
>>250
その理屈はOSすら信じられずPC使うなって発想にしかならん
信じた者が信じる者は正しい、セキュリティの基本やろ
252
(1): (ワッチョイ 1163-8qzv) 2023/12/08(金)20:31 ID:VEgZ7oNC0(5/5) AAS
企業でもそうなんですか?
管理者が望んでいないプログラムが動かせたら困るでしょう

管理者自身がやるってならちょっと違いますが
253: (ワッチョイ eaad-snvD) 2023/12/08(金)20:41 ID:Bb4hYLfH0(2/2) AAS
>>252
それはつまり「身内じゃないから動かない」なわけで身内も信じちゃまずいにはならんわけよ
>>249ではちみつ先輩が言っているのは「許可されたものは動く」なわけで
管理者が許可したものは動くし許可しなければ動かない

たぶん「許可したプログラムが許可してないコードを実行したらどうすんの?」ってことだと思うけど
そんなプログラムを許可した時点で間違ってる
254: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)20:48 ID:B2zBKDAb0(6/6) AAS
???
私の理解だと >>247 は「機械語をその場で生成して即時実行するのって危なくないの?」という話だと思ってたんだけど違うの?
そういう理解だったから実行の許可を出す (メモリの実行可能属性を ON にする API を呼び出す) ことなく実行できない、
プログラマの意図しない実行は防がれるということを応えたつもりだったんだけど、運用の話なの???

「身内」ってのは「プログラムの中での機械語生成にミスったらめっちゃ暴走するやん?」という意味かと思ったけど
運用にかかわる人物という意味?
255: (ワッチョイ ea79-4utE) 2023/12/08(金)21:24 ID:8rS6bPls0(1) AAS
>>225
C++黎明期はC++トランスレーター付きのCを普通に使わされたもんだよ
256: (スップ Sdbf-MP5X) 2023/12/09(土)07:42 ID:Z2D8kHNzd(1) AAS
>>250
それなら自作のプログラムをコンパイルして実行できる環境がすでにまずいだろw
パソコンをゲーム機みたいにしたいのかい

読み書きできるメモリを実行可能属性にできるというだけで
書き込み不可能なシステムメモリに書き込めるようにできるわけではない
257: (ワッチョイ ff46-vhj2) 2023/12/09(土)08:06 ID:NnZXyC0n0(1) AAS
本日のWebは、
・帝乃三姉妹は案外、チョロい。 → 本誌で既読
・レッドブルー → 本誌で既読
・からかい上手の高木さん → ゲッサンで既読

どうにかしてよ、A立。たとえば響5巻無料Webでもとか。

そういえば、高木さんの人の将棋のやつ、マガポケでも終わったね。
258: (ワッチョイ 97cf-TEND) 2023/12/09(土)08:12 ID:zYR2UmFI0(1) AAS
いわゆるroot権限が必要な行為は実行出来ないね
でも、mprotectの説明によると
> 注意
Linux では、(カーネル vsyscall 領域以外の) 任意のプロセスアドレス空間において mprotect ()を呼び出すことが、常に許されている。
となってるから、Node.js(node)とかJITを行うプログラムがユーザー権限で動くのだろう
単に利便性の為だろう
259
(3): (ワッチョイ 9f07-h0RM) 2023/12/12(火)20:44 ID:3wiw5swR0(1/3) AAS
staticグローバル変数を含んだ動的ライブラリーを動的リンクをする場合はグローバル変数が初期化されるのはmain実行前の認識です。
同じプロセス内で再度初期化したい場合は別途初期化の関数を用意してないと不可能でしょうか?
動的ロード(dlopen)を使用した場合はdlcloseして再度dlopenした場合は初期化されますか?
260: (ワッチョイ d701-Qbcu) 2023/12/12(火)21:01 ID:bMo3JLCK0(1/2) AAS
>>259
やってみれば?
261
(1): (ワッチョイ 17f1-tASO) 2023/12/12(火)21:15 ID:6C/zc+S/0(1/2) AAS
明示的に初期化処理を書くのが吉
262
(1): (ワッチョイ d701-Qbcu) 2023/12/12(火)21:58 ID:bMo3JLCK0(2/2) AAS
>>259
>動的ロード(dlopen)を使用した場合はdlcloseして再度dlopenした場合は初期化されますか?
Linuxの場合には初期化されたけど環境依存かも?
$ cat hoge.c hage.c
#include <stdio.h>
static int a = 100;
void increament_a () {++ a;}
void print_a () {printf ("%d\n", a);}
#include <dlfcn.h>
typedef void (*Func) ();
省22
263
(1): (ワッチョイ 9f07-h0RM) 2023/12/12(火)22:04 ID:3wiw5swR0(2/3) AAS
>>261
ですよねぇ
数十万のレガシーコードで、リセットするにはプロセスのキルが前提なんだけど、移植対象のシステムはプロセスをキルできないので、なんとかリセットする方法はないかと…
264
(1): (ワッチョイ 17f1-tASO) 2023/12/12(火)22:10 ID:6C/zc+S/0(2/2) AAS
初期値代入くらい書くだろ普通
処理系によっちゃ不定な値から始まったりするのを防ぐ為にさ
265: (ワッチョイ 9f07-h0RM) 2023/12/12(火)22:18 ID:3wiw5swR0(3/3) AAS
>>262
検証ありがとう
自分の環境でも試してみます
266: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5705-ZkkM) 2023/12/12(火)22:18 ID:Kje9ktjN0(1/2) AAS
>>259
RTLD_NODELETE フラグで再初期化を止められる(というよりアンロードを妨げるのだけど)ので逆に言えば特に指定しなければ再初期化はされるのが通常動作という解釈でいいと思う。

>>263
わかってるだろうけどレガシーコードをそうやって延命させるとますますワヤになるでよ。
267
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 5705-ZkkM) 2023/12/12(火)22:39 ID:Kje9ktjN0(2/2) AAS
>>264
言語仕様的にはグローバル変数 (記憶域期間が static) が不定になったりはしないことになっている (初期化子がなければゼロで初期化する) のでまともな開発環境があるところではそんな心配はしないよ。
心配が必要になるほど不確かな処理系しかない (または初期化処理も自分でかかなきゃいけないような低レイヤ) 分野もあるのは知ってるけどそれが普通ってことはない。
268
(1): (ワッチョイ 9f79-1KRD) 2023/12/12(火)23:05 ID:I4UWTUvH0(1) AAS
>>267
言語仕様ではなく2度目のdlopenの初期化の話なんだからドキュメント化されてないなら何の保証もないでしょ
269: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f3e-ZkkM) 2023/12/12(火)23:55 ID:skpldDGw0(1) AAS
>>268
そういう意味で言ってたのならわかる。
「どうして元から代入する処理を入れてなかった?それが普通だろ?」というニュアンスで受け取ってたから元は dlopen しなおしで対処する想定ではなかったからそういうことを心配してなかった (する必要がなかった) という反応になった。
270: (ワッチョイ 37f2-YdMO) 2023/12/15(金)08:29 ID:a4YsmFKj0(1) AAS
板の名前変わった?
271
(3): (ワッチョイ 6bbb-/1Gs) 2023/12/17(日)18:23 ID:kc2HrTf20(1) AAS
ポインタ変数にアドレスを代入するのはシャローコピーと言えると思いますか?

char s[] = "abc";
char *p = s; // shallow copy
272: (ワッチョイ 4b63-3PPy) 2023/12/17(日)18:40 ID:i7ihHaq10(1) AAS
果たしてコピーと呼んで良い操作ナノか
273
(1): (ワッチョイ 1e5f-DkQ9) 2023/12/17(日)19:27 ID:mH/O4qym0(1) AAS
>>271
言えません
274: (ワッチョイ e34d-e8vO) 2023/12/17(日)19:32 ID:MfQY7qyQ0(1) AAS
>>273

275
(1): (ワッチョイ cb62-dXDU) 2023/12/17(日)22:10 ID:UmzU+/ux0(1) AAS
シャローコピーはディープコピーと並べて語るときに区別するための用語であって、
代入は普通に代入と呼ぶのが、コミュニケーションにおいて適切だ、
と、自分が聞かれた場合なら答えるし、レビュー依頼された場合なら指摘します
276
(2): (ワッチョイ e34d-e8vO) 2023/12/18(月)00:59 ID:Mvyif4Hn0(1/2) AAS
>>275
シャローコピーと言えると思いますか?
277: (ワッチョイ e34d-e8vO) 2023/12/18(月)00:59 ID:Mvyif4Hn0(2/2) AAS
指摘する前に答えろよ無能
278: (ワッチョイ 63c9-/1Gs) 2023/12/18(月)02:31 ID:BtLCMjh/0(1) AAS
シャローコピーでしょ
2つのポインタが同じ内容になってる訳だから
ちなみに、変数定義時の代入文はバインド(束縛する)と言った方が適切だな
279: (ワッチョイ dee7-DkQ9) 2023/12/18(月)09:17 ID:qIC94rZG0(1) AAS
>>276
言えません
280: (ワッチョイ 16ab-zIzn) 2023/12/18(月)09:38 ID:RUscEa1Z0(1/3) AAS
シャローコピーの要件からすると
ポインタ変数にアドレスを代入するだけでは成立せずに
リファレンス可能なオブジェクトを指してるポインタでないとまずい気がする

char *p = (char *)0x000; /* アドレスを代入してるぞ */
281
(1): (ワッチョイ 6bbb-/1Gs) 2023/12/18(月)10:45 ID:RHsCrDES0(1) AAS
意見分かれますね
ではstrdupはディープコピーだと言えますか?
282: (ワッチョイ 4b63-3PPy) 2023/12/18(月)10:52 ID:kauj19Ts0(1/2) AAS
C言語にはオブジェクトと言う概念がないからなあ
お気持ちとしてどうかと聞かれれば、人それぞれで
283: (ワッチョイ efc0-UNLj) 2023/12/18(月)10:54 ID:PYgWDYAB0(1) AAS
いやそれぬるぽ
284: (ワッチョイ d663-/1Gs) 2023/12/18(月)12:07 ID:ccgmPeZz0(1/2) AAS
>>281
ファイルシステムや仮想記憶とか、コピーオンライトといって、書き込みが発生するまでは単なる参照先のコピーだけでコピー完了としてしまう
要するに何をもってコピーかを、先ずは定義してくれ
285: はちみつ餃子◆8X2XSCHEME (ワッチョイ d23e-/274) 2023/12/18(月)12:57 ID:vbeDxg2G0(1) AAS
それは C の概念モデルを前提にしていいだろ。
286: (ワッチョイ 16ab-zIzn) 2023/12/18(月)14:16 ID:RUscEa1Z0(2/3) AAS
C++ の 参照だったら概念含めてそのまんまだったんだろうな
int a;
int& b = a;
287: (ワッチョイ 12ad-9NgZ) 2023/12/18(月)14:52 ID:kcYk1zSZ0(1) AAS
>>271
言えると思う。
288: (スフッ Sd32-3CSV) 2023/12/18(月)16:19 ID:xiaHc48Fd(1) AAS
内容が値を表すメモリの位置 = オブジェクト
289
(2): (ワッチョイ cb62-dXDU) 2023/12/18(月)17:05 ID:pYYMlhZJ0(1) AAS
>>276
「言わない」

代入をシャローコピーだとか言ってなにか騒いでる人があなたの周りにいるという話?なら、そいつバカだからあなたは相手にしなくていいよ。あなたはもっと大事な問題に取り組むべき
290: (ワッチョイ 4b63-3PPy) 2023/12/18(月)17:09 ID:kauj19Ts0(2/2) AAS
代入元の配列がスタック上なのかどうか、そちらの方がC言語的には重要
291: (ワッチョイ 16ab-zIzn) 2023/12/18(月)17:12 ID:RUscEa1Z0(3/3) AAS
関数内の自動変数へのポインタを関数の外へ持ち出したりすると…
292: (ワッチョイ 5f01-3PPy) 2023/12/18(月)18:48 ID:epkANb1d0(1) AAS
何かのポインタをメンバに持つ構造体の実体の複写
293
(1): (ワッチョイ d663-/1Gs) 2023/12/18(月)23:27 ID:ccgmPeZz0(2/2) AAS
>>289
代入はコピーじゃないのか?
代入とコピーの本質的な違いは何だ?
294: (ワッチョイ 16cf-fH6R) 2023/12/18(月)23:33 ID:a4PUOo8N0(1) AAS
コピーには違いないけどディープとかシャローとか区別できるものじゃないってことだろ
295
(1): (ワッチョイ 1279-F8eA) 2023/12/18(月)23:40 ID:6hD73gHu0(1) AAS
>>293
代入は演算の種類
コピーは演算した結果起こる作用
用語を論理的に整理できてないとお話にならないだろう
RustvsC++スレ辺りでまともな議論ができてないのはこれのせい
296: (ワッチョイ 4b46-AQ+F) 2023/12/19(火)08:23 ID:ijJJQ5/r0(1) AAS
>>295
そういうコトなら、>>271
アドレスを代入演算した結果を、シャローコピーと言えるか、
という質問じゃないの?
297
(3): (スププ Sd32-3CSV) 2023/12/19(火)09:34 ID:+6PK9xZxd(1/2) AAS
シャローコピーとかディープコピーとかはもともとPythonの概念ですよね?
298: (ワッチョイ 2701-NGr8) 2023/12/19(火)09:54 ID:hCROhcq70(1) AAS
は?
299: (ワッチョイ 2701-3PPy) 2023/12/19(火)10:05 ID:cwbunCZy0(1/2) AAS
>>289
馬鹿ってすぐ断定するよな
300: (ワッチョイ 77cd-UNLj) 2023/12/19(火)10:07 ID:KoTx3gw20(1/2) AAS
コピーとクローンは違うよな?
301
(1): (ラクッペペ MMde-Y9Ov) 2023/12/19(火)10:13 ID:MIravlrKM(1) AAS
>>297
C++やJavaあたりが元だと思うけど
302: (ワッチョイ 4b63-3PPy) 2023/12/19(火)10:17 ID:gboy58yC0(1) AAS
そういうことで、
Cにはシャローコピーとかディープコピーとかの概念はない
1-
あと 700 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.046s