PROMETHEUS の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_2.gif)
- 仮想メモリでない環境でのmalloc freeのよいアルゴリズムを教えてください
ゲーム機の開発をしています。 仮想メモリがないので、mallocとfreeを不定の順序で繰り返しているとヒープ領域が断片化し、そのうちにメモリは不足していないはずなのにmallocできなくなります。ゲーム機のSDKにはそういうことを想定しているのか malloc、free の代替関数を設定できるようになっています。そこで、代替関数を用意しようと考えていると考えています。 完全に断片化をさけるには、mallocした逆順にfreeするとか使い方の工夫をしないと無理とは思いますが、通信系のライブラリにの内部などでmallocしていたりして完全にはこちらの思うとおりにはできません。テクスチャーなどの常駐でなるべく多くのメモリを使いたいので、ヒープ領域はできるだけ小さくすませたいのです。どんなアルゴリズムでも、ある程度の断片化はさけられないと思いますが、malloc、freeのよいアルゴリズムが紹介されているところがありましたら、御教えください。使われ方との相性があると思いますので、複数のアルゴリズムが紹介されていればうれしいです。
- xpのログオンの時のパスワードについて
パソコンの調子が悪くなり、xpの再インストールしました。 ログオン時にパスワードの入力欄が出てくるのですが、再インストール前にはパスワードの設定はしておりませんでしたので、入力する事ができません。セーフモードで起動して、Administratorでログオンしましたが、またパスワードの入力を求めてきます。こちらもパスワードの設定はしておりません。 どうすればいいでしょうか。
- 締切済み
- susukiya
- Windows XP
- 回答数2
- ふと思ったのですが、タレントさんのホームページ等で写真をコピーすることは・・・
タレントさんなどのホームページや一般の方のブログ等で、欲しいなぁと思った画像があったとします、そうしたら右クリックをしてコピーをしてしまっていいものなのでしょうか?そんなに簡単にコピーしてしまったら著作権で問題はないのでしょうか? ご回答いただければ幸いです。
- ホームページのコピー防止について
1年かけて作成した業務用ホームページを知らぬ間にコピーされていました。二度とコピーされないようにガードをかけたいのですが、ソフトなり設定なり、何らかの対策方法があればどうか教えて下さい。泣
- ベストアンサー
- iypao
- その他(ITシステム運用・管理)
- 回答数8
- operator * について
掛け算ではない方の operator * についての質問です。 下のソースを見てください。関数func()内で、(*this)[idx]というやり方と、直接operator [] を呼び出すやり方を試しています。(*this)[idx]は自分のコピーを作ってしまわないでしょうか?このようなやり方は正しいでしょうか。というのが第1の質問です。 さらに、CTestで operator * を定義していますが、(*this)[idx]で呼び出されません。なぜなのでしょうか。というのが第2の質問です。 どうぞよろしくお願いいたします。 class CTest : public vector<int> { public: CTest() : vector<int>() { push_back(1); push_back(2); push_back(3); } void func() { #if 1 // 質問1 この書き方をしてもコピーが作られないかどうか? cout<<(*this)[0]<<endl; cout<<(*this)[1]<<endl; cout<<(*this)[2]<<endl; #else cout<<operator[](0)<<endl; cout<<operator[](1)<<endl; cout<<operator[](2)<<endl; #endif } CTest& operator * () { // 質問2 なぜこのオペレータが呼び出されないのか cout<<"???"<<endl; return *this; } }; void main(void) { CTest inst; inst.func(); }
- ベストアンサー
- honehone51
- C・C++・C#
- 回答数2
- キャスト
double i; for(i = 1.0; (int)i<=10; i+=0.1){ printf("%lf %d\n",i,(int)i); } 上のようなソースで 1.0 から 10.9 まで 0.1 刻みで小数を表示しようとしたのですが、 条件式 (int)i<=10 にも関わらず出力結果に 11.0 が含まれてしまうのは何故でしょうか。
- ベストアンサー
- tanakarakusamoti
- C・C++・C#
- 回答数3
- operator * について
掛け算ではない方の operator * についての質問です。 下のソースを見てください。関数func()内で、(*this)[idx]というやり方と、直接operator [] を呼び出すやり方を試しています。(*this)[idx]は自分のコピーを作ってしまわないでしょうか?このようなやり方は正しいでしょうか。というのが第1の質問です。 さらに、CTestで operator * を定義していますが、(*this)[idx]で呼び出されません。なぜなのでしょうか。というのが第2の質問です。 どうぞよろしくお願いいたします。 class CTest : public vector<int> { public: CTest() : vector<int>() { push_back(1); push_back(2); push_back(3); } void func() { #if 1 // 質問1 この書き方をしてもコピーが作られないかどうか? cout<<(*this)[0]<<endl; cout<<(*this)[1]<<endl; cout<<(*this)[2]<<endl; #else cout<<operator[](0)<<endl; cout<<operator[](1)<<endl; cout<<operator[](2)<<endl; #endif } CTest& operator * () { // 質問2 なぜこのオペレータが呼び出されないのか cout<<"???"<<endl; return *this; } }; void main(void) { CTest inst; inst.func(); }
- ベストアンサー
- honehone51
- C・C++・C#
- 回答数2
- Divxファイルの音声多重について
テレビで録画した映画のMPGファイルを、パソコンでDivxでaviファイルに圧縮しました。 Windows Media Player10で再生出来るのですが、その際音声が片側から主音声の日本語が、反対側から副音声の外国語が同時に再生されます。 これを片側の音声のみを両方のスピーカーから再生させるには、どのように設定すればようのでしょうか、または他に再生するソフトが必要なのでしょうか。
- 締切済み
- rc13
- その他(ソフトウェア)
- 回答数2
- BoundsChecker はスマートポインターも判定してしまう?
BoundsChecker V6.20を持っているのですが どうも、スマートポインター(vc++)を誤って検出しているようなのです?? 最新版なら これらの問題は解決されているのでしょうか?
- PDFが印刷できないのは著作権等の関係でガードをかけているのでしょうか?
ある資料がCDにPDF形式で入っています。CDからPCへのコピーは出来ました。ただ、その資料で勉強しようとするのに画面から呼び出して見るのは面倒なので、プリントアウトしようと思ったのですが、印刷が出来ないようにしてあります。これは、著作権保護のため、先方がペーパーにして配布されるのを否として、ガードをかけているんでしょうが、不便です。個人使用に限って使用するわけですから、書き込みもしたいし、どうしても印刷する方法はないのでしょうか? ただ、違法なことはしたくないのと、不便さの狭間で悩んでいます。 絶対に、これって無理なんでしょうね?(法的にも技術的にも)
- boostを利用したプログラムのコンパイルでエラー
boostを初めて利用しようと思い、ファイルをダウンロードして、bjamを使ってインストールしました。そして以下のようなテスト用のプログラムを作成しました。 #include <boost/tokenizer.hpp> using namespace boost; int main(void) { char_separator<char> sep(" \t\n"); tokenizer<char_separator<char> > tokens("aaa bbb ccc", sep); return 0; } これをbcc32によりコンパイルすると、以下のようなエラーがいくつか発生してコンパイルができませんでした。 エラー E2489 c:\borland\bcc55\include\boost-1_33_1\boost/mpl/aux_/integral_wrapper.hpp 45: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください なぜ、このようなエラーが出るのでしょうか。ちなみに、cygwin+gccではコンパイルおよび実行が可能でした。 ご存じの方がいらっしゃったらよろしくお願いします。(WinXPです)
- 構造体のメモリの確保のされかた
2つ質問があります。 1. #include <iostream> using namespace std; union Data { unsigned long val1_val2; struct { unsigned short val1; unsigned short val2; } value; }; int main(void) { Data data; data.val1_val2 = (40 /* val1 */ << (sizeof(data.value.val1) * 8)) + 10 /* val2 */; cout << "val1 = " << data.value.val1 << endl; cout << "val2 = " << data.value.val2 << endl; return 0; } 上記ソースコードを実行すると、「val1 = 10 val2 = 40」という結果がでます。val1は上位2バイトを指しているはずだと考えて書いたのですが、何が間違っているのでしょうか? 構造体は上に書いたメンバーを下位に割り当てていくのでしょうか? 2. 32ビットコンピューターでは構造体のサイズは4の倍数バイトになると聞いたのですが、VC++で struct s1{ char c; }; のサイズをsizeof演算子で見てみると、1バイトで struct s2{ unsigned bit: 1; }; のサイズは4バイトでした。 前者は本当に1バイトで扱われているのでしょうか? 以上2つよろしくお願いします。
- ベストアンサー
- minimax2005
- C・C++・C#
- 回答数4
- 大きな数の乱数を作るには
C 初心者です。 表題のように、unsigned longのスケールの乱数をつくりたいんですが、以下のように記述すると値がいつも同じになります。この理由と、正しく動作するにはどう直したらいいのか教えてください。 unsigned long ul; ul = 4294967295UL * rand() / (RAND_MAX + 1); 値は常に131071でした。
- acrobatのしおり機能について
acrobat7.0を使って、WORDファイルをPDFに変換しているのですが、 その際に見出しを作ってしおりを作成しています。 しおりは無事にできるのですが、しおりのプロパティ「アクション」タブの 中央:アクション:倍率の設定が自動で「ズーム設定維持」で作成されてしまいます。 「幅に合わせる」にしなければならないので、PDF化の後一つずつ手動で直しているのですが、 時間がかかって困ってるんです。 できれば、PDF化した際に既に「幅に合わせる」で作成できるようにデフォルト設定したいのですが、 どうすればよいのでしょうか? 初心者な質問でごめんなさい。 デフォルト設定できなくても、PDF化後のしおりを一括で変換できる方法でもかまいません。 ご存知の方がいらっしゃいましたら、教えてください! よろしくお願いいたします。
- ベストアンサー
- eadgbe
- その他(業務ソフトウェア)
- 回答数2
- XMLパーサを紹介してください。
VisualStudio2003でアプリを開発しています。 C或いはC++から利用できるXMLパーサを探しているのですが .NETやMFCを利用せず お手軽で軽量なXMLパーサをご存知ないでしょうか? 機能は単純なもので構いません。
- ベストアンサー
- taranrappu
- C・C++・C#
- 回答数2
- 構造体とクラスの違い
お世話になります。 先日、C(C++もかな?)のベテランのプログラマの方が「構造体とクラスはまったく違うものだ」ときっぱり言い切っていらっしゃいました。私は、構造体にメソッドが加わったものがクラスだ、くらいな認識で、まったく違うものというよりはかなり近しい概念だと思っていたので少々驚いた次第です。 疑問が残りましたので、インターネットでいろいろ検索してみたのですが、おしなべて「構造体とクラスには共通点が多い」と説明されており、どうしても「まったく違うもの」と解釈できる文献を見つけることができませんでした。 果たして「構造体とクラスはまったく違うもの」なのでしょうか?
- ベストアンサー
- noname#21585
- C・C++・C#
- 回答数15
- 教えてください
入力した文字列のスペースをすべて取り除く関数を返すのですが、分かりません。(例)a s d fと入力したら、asdfと表示します。途中まで考えたのですが、どうしてもできません。教えてください。宜しくお願いします。(このソースは、コンパイルエラーです。) 14: 移植性のないポインタ変換(関数a) #include <stdio.h> char a(char *st) { char *ptr=st; while(*st!='\0') { if (*st != ' ') { *ptr++=*st; } } *ptr='\0'; return(ptr); } int main(void) { char str[21]={'\0'}; int i=0; char ch; printf("文字列を入力してください:"); while(i<21) { ch=getchar(); if (ch=='\n') {break; } else if (ch != '\0' && ch != '\n') { str[i] =ch; i++; } } str[i] = '\0'; printf("%s",a(str)); return(0); }
- 干支のプログラム
西暦を入力すると干支が表示されるというプログラムを作りたいのですが、どうしても上手くいきません。どこが間違っているのでしょうか? #include <stdio.h> int main(){ int i, first, year; printf( "西暦を入力して下さい --> " ); scanf( "%d", &year ); first = ( year - 1900) if( first % 12 == 0 ) { i = "ねずみ"; if( first % 12 == 1 ) { i = "うし"; } if( first % 12 == 2 ) { i = "とら"; } if( first % 12 == 3 ) { i = "うさぎ"; } if( first % 12 == 4 ) { i = "たつ"; } if( first % 12 == 5 ) { i = "へび"; } if( first % 12 == 6 ) { i = "うま"; } if( first % 12 == 7 ) { i = "ひつじ"; } if( first % 12 == 8 ) { i = "さる"; } if( first % 12 == 9 ) { i = "とり"; } if( first % 12 == 10 ) { i = "いぬ"; } if( first % 12 == 11 ) { i = "いのしし"; } printf( "%d どしです", i ) } } return 0; }
- ベストアンサー
- sakura_spring52
- C・C++・C#
- 回答数11