これは改訂版です。キューのメモリを解放するには?鉱山は無料ではありません
メモリが3.5GBで、ポップアップ機能でメモリが解放されない...どうすればそれらのメモリを元に戻すことができますか?今私はSTLを使用しています。なぜなら、newとdeleteはポインタに対してのみ機能するからです。
queue<Graphnode> ss;
for(i=0;i<30000000;i++)
{
ss.push(*g.root);
}
printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
for(i=0;i<30000000;i++)
{
ss.pop();
}
printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
//delete &ss;
ここは私のnode.hファイルです。私はmallocとフリーまたはニュー、ポインタをここに削除する必要があると思いますか?
#include <stdio.h>
#include <stdlib.h>
#include <tr1/array>
typedef struct point
{
std::tr1::array<int, 16> state;
int x;
}point;
typedef struct Graphnode
{
struct point pvalue;
int depth;
struct Graphnode *up;
struct Graphnode *down;
struct Graphnode *left;
struct Graphnode *right;
}Graphnode;
コードを修正した後は、このようになりますか?
#include <stdio.h>
#include <stdlib.h>
#include <tr1/array>
typedef struct point
{
std::tr1::array<int, 16> state;
int x;
int depth;
}point;
typedef struct Graphnode
{
point *pvalue = (point *)malloc(sizeof(point));
Graphnode *up = (Graphnode*)malloc(sizeof(Graphnode));
Graphnode *down= (Graphnode*)malloc(sizeof(Graphnode));;
Graphnode *left= (Graphnode*)malloc(sizeof(Graphnode));;
Graphnode *right= (Graphnode*)malloc(sizeof(Graphnode));;
}Graphnode;
'push'関数のコードと、キューの要素をどのように作成するのかを、おそらく追加してください。あなたの質問に 'C++'というタグを付けましたが、あなたは 'free'を使用しようとしています。 –
sorry..itはスタック用ではないキュー用です。私はそれを変えた。 C言語の関数は何ですか?C++のfree()のように? – weeo
'delete'演算子があります。 http://www.cplusplus.com/reference/std/new/operator%20delete/を参照してください。 'new'でオブジェクトを割り当てる場合は' delete'を使うべきです。また、C++の標準ライブラリでは、 'push_front()'や 'push_back()'を使用して、コンテナの先頭と末尾に要素を追加します。 –