トップページ⇒tech
1001コメント296KB

【初心者歓迎】C/C++室 Ver.92【環境依存OK】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/07/31(木) 19:14:13.79ID:17Xd3Yqq
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
前スレ
【初心者歓迎】C/C++室 Ver.91【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1400394837/

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0951デフォルトの名無しさん2014/10/03(金) 07:28:13.22ID:2ixhbIuP
よし理解できるまで読んでくれ
20.6.9.1p6
The use of hint is unspecified, but intended as an aid to locality if an implementation so desires.
0952デフォルトの名無しさん2014/10/03(金) 09:05:28.54ID:Qxdy43ON
特に気にしたことなかったけどなんだこれw
0953デフォルトの名無しさん2014/10/03(金) 10:12:56.78ID:8OTaypIY
ヒントは所詮ヒント
0954デフォルトの名無しさん2014/10/03(金) 11:34:14.30ID:UziybsFR
>>943
あんがと。もともと、軽量のデータ想定だから、書き換えたければ、毎回新規にOBJECTつくればいいでしょ
ぐらいなんだろうね。左辺への参照戻し不許可にするのはセキュリティ的には
正しいんだろうけどなぁ。。
C11で使うとなると、やっぱこれに手をいれるしかないか。
0955デフォルトの名無しさん2014/10/03(金) 12:43:34.83ID:vVK7ZKzx
あまり理解できていないので変な事を聞いてるかしれませんが、
自分のハンドルから親のハンドルを取る関数ってあるのでしょうか?
0956デフォルトの名無しさん2014/10/03(金) 12:44:12.85ID:zYcZx51K
ハンドルって何
0957デフォルトの名無しさん2014/10/03(金) 12:50:34.66ID:lXIQAzKJ
あまり理解できていないので変な事を答えてるかしれませんが、
親のハンドル = getparent(自分のハンドル)という関数があるはずです?
0958デフォルトの名無しさん2014/10/03(金) 13:42:16.68ID:gGzwLNzY
オブジェクトを指し示す論理的オブジェクト
0959デフォルトの名無しさん2014/10/03(金) 19:04:38.96ID:ceUJAoE9
MSVCだと一時オブジェクトのアドレスを取得できちゃうんだけど、
このオブジェクトはいつまで有効なの?

#include <windows.h>
#include <iostream>

struct A { int x; };

int main()
{
  A *p = &A();  // なんぞこれ
  p->x = ::GetTickCount();
  std::cout << p->x << std::endl;

  return 0;
}
0960デフォルトの名無しさん2014/10/03(金) 20:03:47.80ID:2ixhbIuP
;  // なんぞこれ

このセミコロンまで
0961デフォルトの名無しさん2014/10/03(金) 20:27:06.70ID:ceUJAoE9
では、次のケースでは関数から制御が戻るまで有効なのだろうか?
(何の意味があるのかは別として)

struct A { int x; };
void func(A *p) { p->x = ::GetTickCount(); }

int main()
{
  func(&A());
  return 0;
}
0962デフォルトの名無しさん2014/10/03(金) 20:36:56.30ID:yBfd1FLr
なんか大袈裟に MSVC だととか言ってるけど別にg++でもヘッダファイルを
など変更してやればおk
0963デフォルトの名無しさん2014/10/03(金) 20:51:39.95ID:2ixhbIuP
>>961
クソレスでスレを汚す暇があったら
デストラクターにprint入れて調べろカス
0964デフォルトの名無しさん2014/10/03(金) 21:06:56.34ID:F3skKHUN
この程度聞くより実行したほうが
どう考えても早い件
0965デフォルトの名無しさん2014/10/03(金) 21:10:40.63ID:Bj0U/nno
struct A { int x; ~A(){printf("baka");}};
void func(A *p) { p->x = ::GetTickCount(); }

int main()
{
  func(&A()), printf("aho");
  printf("shine");
}
0966デフォルトの名無しさん2014/10/03(金) 21:13:18.67ID:engCVLK6
>>965
func内で出力しないと証明にならないんじゃない?
0967デフォルトの名無しさん2014/10/03(金) 22:02:47.44ID:ccTAdR9V
シーケンスポイントも知らないひとはこんな質問しないだろうから証明は必要だな
と思ったらC++11でシーケンスポイントという言葉が無くなってた
0968デフォルトの名無しさん2014/10/03(金) 23:07:33.71ID:0o01OOek
すみません、誰か正規表現について教えてください

#define(空白文字が1個以上)(単語に使われる文字が1個以上)
を検索したいのですが、正規表現でどうやって書いたらいいか分かりません
#define([\s]+)([\w]+) とやってみたのですが、検索で引っかかりません
だれか教えて下さい(´;ω;`)
0969デフォルトの名無しさん2014/10/03(金) 23:11:05.22ID:HP+NX9Yz
スレチ
0970デフォルトの名無しさん2014/10/03(金) 23:22:45.26ID:B6mxhxuk
#define(\s+)(\w+)

文字列のエスケープシーケンスも確認
0971デフォルトの名無しさん2014/10/03(金) 23:30:10.04ID:0o01OOek
>>970
> 文字列のエスケープシーケンスも確認
まさしく、それでした・・・

\がエスケープシーケンスとして解釈されるから\\と入力しなくちゃだめだったんですね
すっごい初歩的なミスでごめんないさい。吊ってきます ('A`)
0972デフォルトの名無しさん2014/10/03(金) 23:36:27.03ID:0aZUNouk
>>970-971
スレ違いと言われてるのにスレを荒らすなゴミクズ
0973デフォルトの名無しさん2014/10/04(土) 21:28:16.62ID:ytZZFNXo
だいぶ昔って、C言語で取得したメモリをプログラムでfreeし忘れると
プログラムが終了してもOSも解放してくれないっていう事があったのですか?

また、C言語で作成したプログラムの中でファイルポインタをクローズし忘れると
そのプログラムが終了した後も、そのファイルに対する入出力ができなくなってしまう(ロックされてしまっている状態)という
ことがあったのですか?
0974デフォルトの名無しさん2014/10/04(土) 21:32:20.16ID:uBTtBUuA
大昔ならあったんじゃないかな
0975デフォルトの名無しさん2014/10/04(土) 22:04:04.72ID:KbByyPwl
同時オープン数制限がきつかったからな
0976デフォルトの名無しさん2014/10/04(土) 22:07:11.31ID:QZPta7oH
>>973
Windowsにはリソースを開放しない(M$が仕様と言い張っている)バグがあるそうです。
Linux板では有名な話です。
0977デフォルトの名無しさん2014/10/04(土) 22:08:37.39ID:RXCsY/a+
>>973
WindowsはNT系より前はそうだった、NT系からはOSがよしなに解放してくれる、
ただしそれで解放しないプログラムはOS依存になる為汎用性が損なわれるし、
短いプログラムなら良いが長く起動するアプリケーションでそれをやるとメモリ食いつぶすのでやったらダメ。
0978デフォルトの名無しさん2014/10/04(土) 22:29:55.72ID:j+aw4iLv
>>976
> Windowsにはリソースを開放しない(M$が仕様と言い張っている)バグがあるそうです。

具体的に何?
犬厨の妄想じゃないんだよね?
0979デフォルトの名無しさん2014/10/04(土) 22:31:35.39ID:RXCsY/a+
>>977
s/汎用性/移植性/g
0980デフォルトの名無しさん2014/10/04(土) 23:26:04.11ID:9kptgWt4
>>945
忙しくてお返事が遅れてしまいました、すいません。

つまりlistでオーバーライドは賢いやり方ではないということでしょうか...
もしそうであれば、代わりになる方法等はございますでしょうか
よろしくお願いします
0981デフォルトの名無しさん2014/10/04(土) 23:26:48.62ID:OJABLBvT
ms officeなんてご丁寧にファイルを
ロックしてくれる上に、
プロセスが落ちたあとも何故か解放されず
再起動するまでファイルが弄れなくなるなんて
未だによく経験するだろう
0982デフォルトの名無しさん2014/10/05(日) 00:00:19.98ID:ktqu8y2s
プロセスが死にきれなくて残ってることならある
0983デフォルトの名無しさん2014/10/05(日) 01:16:55.03ID:ki3v4/8Q
そこはタスクマネージャでも何でも普通確認すると思うが
0984デフォルトの名無しさん2014/10/05(日) 01:45:00.81ID:ECj89i9h
あれはオフィスのプロセスが掴んでるんじゃなくて
カーネルが掴んでるからタスクマネージャでプロセス殺すと自動的に再起動なのでは?( ´∀`)
0985デフォルトの名無しさん2014/10/05(日) 01:53:29.52ID:OsaIba9z
エクスプローラプロセスが掴んでて消せないことはよくある
ファイルハンドルなどプライベートリソースはプロセス終了とともにクリア
共有リソースはいろいろ
0986デフォルトの名無しさん2014/10/05(日) 02:34:14.29ID:eVa9bbGh
>>978
妄想に浸りたいんだから問いつめちゃだめ
自尊心が保てなくなっちゃうよ?
0987デフォルトの名無しさん2014/10/05(日) 07:32:55.81ID:waE9omSr
あ
0988デフォルトの名無しさん2014/10/05(日) 07:38:07.55ID:e3IJDrLs
る
0989デフォルトの名無しさん2014/10/05(日) 08:28:31.22ID:vX4qgpsa
ひ
0990デフォルトの名無しさん2014/10/05(日) 16:46:09.67ID:x75CBE+a
とあるサイトで見つけたのですが

例)
{
int b = 0;
int* c = new int;
}
コープを抜けた後にはポインタのcが存在しないので
delete c とも書けない分けです。
・・・という分けでnewしたスコープやクラスが
きちんとdeleteの面倒を見るように注意を払う必要があります。



とありました。
この場合にdeleteをし忘れると
確保した領域はプログラム終了まで
開放する術は全くないのでしょうか?
0991デフォルトの名無しさん2014/10/05(日) 16:49:39.20ID:kq2CsrMi
言語仕様の範囲では存在しない
0992デフォルトの名無しさん2014/10/05(日) 16:51:47.92ID:a6/ySe32
次スレ
↓
0993デフォルトの名無しさん2014/10/05(日) 16:52:15.28ID:4FShMSYH
>>990
全くないとは言わないけどその程度の知識レベルでは使えないのでないに等しい
0994デフォルトの名無しさん2014/10/05(日) 16:53:31.72ID:a6/ySe32
>>990
return c;
0995デフォルトの名無しさん2014/10/05(日) 16:54:39.32ID:4FShMSYH
はいよ
http://peace.2ch.net/test/read.cgi/tech/1412495628/
0996デフォルトの名無しさん2014/10/05(日) 16:57:19.28ID:x75CBE+a
私が扱える範囲では無理なのですね
newをしたらdeleteを忘れないよう心がけます
ありがとうございました
0997デフォルトの名無しさん2014/10/05(日) 17:01:55.58ID:kq2CsrMi
>>996
やめてください
newしたらセミコロンに達するまでにスマポに挿れてください
deleteはしないでください
0998デフォルトの名無しさん2014/10/05(日) 17:06:54.96ID:BWhErrhC
いやいやnewをオーバーロードしてGCにぶち込むのが今時の正解だよ
0999デフォルトの名無しさん2014/10/05(日) 17:07:27.83ID:TPVUn8gD
埋め
1000デフォルトの名無しさん2014/10/05(日) 17:08:09.41ID:a6/ySe32
malloc はスマポに挿れられますか?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。