mallocの後にfree不要と言うバカいるの?Part2
■ このスレッドは過去ログ倉庫に格納されています
fjの時代から10年以上に渡るmalloc/free問題について語ってください(^q^)
前スレ
main以外★mallocの後にfree不要と言うバカいるの?
http://toro.2ch.net/test/read.cgi/tech/1352812333/ ああ、こうだった
void A::resize(int n) {
int i;
int m = (n < m_size ? n : m_size);
T* tmp=new T[n];
if (m_p != nullptr) {
for (i = 0; i < m; i++) tmp[i] = m_p[i];
delete[] m_p;
}
m_p = tmp;
m_size = n;
} >>641
どこが?って、そのまんまだよ
{ A<int> a(10);
for (i = 0; i < a.m_size; i++) a.m_p[i] = i + 10;
resize(5);
dispAint(a); }
メモリの確保と破棄をこのスコープで自動的にやるよ
利用は参照渡しじゃないとデストラクタが複数回呼ばれちゃうけどな ミス
{ A<int> a(10);
for (i = 0; i < a.m_size; i++) a.m_p[i] = i + 10;
a.resize(5);
dispAint(a); } だからそれのどこがスマートポインタなの?
まだ気づかないの?本物のバカだ 所有権エラーが嫌ならthisポインタを保存すればいいだけのこと
ポインタとしての構文動作がしたいなら->()なり、*()なり
オペレータオーバーロードすりゃあいいだろ
#include <iostream>
using namespace std;
#define TEST
template<typename T>class A {
public:
T* m_p;
A* m_owner;
int m_size;
A() {
m_owner = this;
m_p = nullptr;
m_size = 0;
#ifdef TEST
cout << "コンストラクタ A"<<endl;
#endif
}
A(int n) :A() { m_p = new T[n]; m_size = n; }
~A() {
if (m_owner == this && m_p != nullptr) {
delete[] m_p; m_p = nullptr; m_size = 0;
#ifdef TEST
cout << "デストラクタ A" << endl;
#endif
}
}
つづき つづき
void resize(int n) {
int i;
int m = (n < m_size ? n : m_size);
T* tmp=new T[n];
if (m_owner == this && m_p != nullptr) {
for (i = 0; i < m; i++) tmp[i] = m_p[i];
delete[] m_p;
}
m_p = tmp;
m_size = n;
}
};
void dispAint(A<int> a) {
int i;
for (i = 0; i < a.m_size; i++) cout << a.m_p[i] << endl;
}
void main() {
int i;
{
A<int> a(10);
for (i = 0; i < a.m_size; i++) a.m_p[i] = i + 10;
a.resize(5);
dispAint(a);
}
i = 1;//ブレークポイント設定
return;
} ポインタとしての構文動作がしたいなら->()なり、*()なり
オペレーターオーバーロードすりゃあいいだろ ttp://nas6.main.jp/sptr.cpp
スマートポインタで実装したい動作で↑で足りないものはないとおもう あとはoperator ->(???)の定義の仕方がよくわからん ここまで指摘してあげているのに、
何でスマートポインタで検索して調べないの?
だから君はダメなんだよ
君の書いてるのは、コンテナ、で、スマートポインタ、ではない
はい、答え
バカは黙ってstd::vector使っとけ auto_ptr
scoped_ptr
shared_ptr
weak_ptr ttp://nas6.main.jp/sptr.cpp
コンストラクタが気に入らないみたいだから、よりポインタに近くしたぞ ひでえなあ…値全部コピーしてるだけで全然ポインタじゃない
しかも所有権管理全然できてないから、
コピーコンストラクタで渡すと移動せず不正アクセス
まだauto_ptrのがマシ >>654
俺が一番多用する unique_ptr 忘れてるぞ ttp://nas6.main.jp/sptr.cpp
メイン.cpp
ttp://nas6.main.jp/NAS6_smt_ptr.h
クラス.h
テンプレートが分割コンパイルできなくて四苦八苦した 相変わらず、コンテナとスマポの概念がごっちゃになってる
ゴミだな スマートポインタは標準ライブラリので間に合ってるから、テンプレートベースのツリー
コレクション作ってよ。 ttp://nas6.main.jp/sptr.cpp
メイン.cpp
ttp://nas6.main.jp/NAS6_smt_ptr.h
スマートポインタ.h
ttp://nas6.main.jp/NAS6_tree_clct.h
ツリーコレクション.h ttp://nas6.main.jp/sptr.cpp
メイン.cpp
ttp://nas6.main.jp/NAS6_cntn_ptr.h
コンテナポインタ.h
ttp://nas6.main.jp/NAS6_tree_clct.h
ツリーコレクション.h
コンテナポインタに改名した NASさんは物理板で意味不明な投稿連投してたからいいや ttp://nas6.main.jp/secret/ContainerPtr.htm
コンテナポインタ説明ページ ttp://nas6.main.jp/secret/ContainerPtr.htm
コンテナポインタ説明ページ
メモリリークを退治した^^ 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
x 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
IXJ2O ■ このスレッドは過去ログ倉庫に格納されています