이것은 개정판입니다.대기열의 메모리를 확보하는 방법은 무엇입니까? 광산은 무료가 아닙니다.
메모리가 3.5GB이고 팝 기능으로 메모리가 해제되지 않습니다 ... 어떻게 새 메모리와 삭제를 사용하여 메모리를 다시 사용할 수 있습니까? 이제 STL을 사용하고 있습니다. 이후 새 및 삭제 포인터에 대해서만 작동합니까?
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과 free 또는 New가 필요하다고 생각합니다. 여기서 포인터를 지우시겠습니까?
#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++'태그를 붙 였지만'자유 '를 사용하려고합니다. –
미안하지만 .. 스택을위한 대기열이 아닙니다. 나는 그것을 바꿨다. 나는 C++에서 함수가 무엇인지 궁금하다. C에서 free()를 좋아한다. – weeo
'delete' 연산자가 있습니다. http://www.cplusplus.com/reference/std/new/operator%20delete/를 참조하십시오. 'new'로 객체를 할당한다면'delete'를 사용해야합니다. 또한, C++ 표준 라이브러리에서는 'push_front()'또는 'push_back()'을 사용하여 컨테이너의 머리와 꼬리에 요소를 추가하므로 이름이 지정됩니다. –