leetcode 오류의 ERROR: AddressSanitizer: stack-overflow on address...
11334 단어 오류 보고에 관하여
오보 내용 AddressSanitizer:DEADLYSIGNAL
=================================================================
==45==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc1b6a1ff8 (pc 0x7f71b6e7d3e0 bp 0x000000000010 sp 0x7ffc1b6a1fe0 T0)
#0 0x7f71b6e7d3df (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2b3df)
#1 0x7f71b6e7daaa (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2baaa)
#2 0x7f71b6e7a046 (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x28046)
#3 0x7f71b6f5e04e in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10c04e)
SUMMARY: AddressSanitizer: stack-overflow (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2b3df)
==45==ABORTING
번역하다
창고가 넘쳐흐르다.
원인
귀속의 깊이가 너무 높다.
귀속법 해결 방안의 장점은 실현하기 쉽다는 것이다.그러나 귀속의 깊이가 너무 높으면 우리는 당할 수 있다는 큰 단점이 있다
.
해결 방법
실현 방법을 바꾸다.
시나리오는 다음과 같습니다.
AddressSanitizer:DEADLYSIGNAL
=================================================================
==45==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc1b6a1ff8 (pc 0x7f71b6e7d3e0 bp 0x000000000010 sp 0x7ffc1b6a1fe0 T0)
#0 0x7f71b6e7d3df (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2b3df)
#1 0x7f71b6e7daaa (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2baaa)
#2 0x7f71b6e7a046 (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x28046)
#3 0x7f71b6f5e04e in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10c04e)
SUMMARY: AddressSanitizer: stack-overflow (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x2b3df)
==45==ABORTING
창고가 넘쳐흐르다.
원인
귀속의 깊이가 너무 높다.
귀속법 해결 방안의 장점은 실현하기 쉽다는 것이다.그러나 귀속의 깊이가 너무 높으면 우리는 당할 수 있다는 큰 단점이 있다
.
해결 방법
실현 방법을 바꾸다.
시나리오는 다음과 같습니다.
실현 방법을 바꾸다.
시나리오는 다음과 같습니다.
해결 방법 관련
BFS 코드 템플릿
Java 위조 코드/**
* Return the length of the shortest path between root and target node.
*/
int BFS(Node root, Node target) {
Queue<Node> queue; // store all nodes which are waiting to be processed
int step = 0; // number of steps neeeded from root to current node
// initialize
add root to queue;
// BFS
while (queue is not empty) {
step = step + 1;
// iterate the nodes which are already in the queue
int size = queue.size();
for (int i = 0; i < size; ++i) {
Node cur = the first node in queue;
return step if cur is target;
for (Node next : the neighbors of cur) {
add next to queue;
}
remove the first node from queue;
}
}
return -1; // there is no path from root to target
}
현식 스택 코드 템플릿
Java 위조 코드/*
* Return true if there is a path from cur to target.
*/
boolean DFS(int root, int target) {
Set<Node> visited;
Stack<Node> s;
add root to s;
while (s is not empty) {
Node cur = the top element in s;
return true if cur is target;
for (Node next : the neighbors of cur) {
if (next is not in visited) {
add next to s;
add next to visited;
}
}
remove cur from s;
}
return false;
}
도움이 된다면 주문하세요~
/**
* Return the length of the shortest path between root and target node.
*/
int BFS(Node root, Node target) {
Queue<Node> queue; // store all nodes which are waiting to be processed
int step = 0; // number of steps neeeded from root to current node
// initialize
add root to queue;
// BFS
while (queue is not empty) {
step = step + 1;
// iterate the nodes which are already in the queue
int size = queue.size();
for (int i = 0; i < size; ++i) {
Node cur = the first node in queue;
return step if cur is target;
for (Node next : the neighbors of cur) {
add next to queue;
}
remove the first node from queue;
}
}
return -1; // there is no path from root to target
}
/*
* Return true if there is a path from cur to target.
*/
boolean DFS(int root, int target) {
Set<Node> visited;
Stack<Node> s;
add root to s;
while (s is not empty) {
Node cur = the top element in s;
return true if cur is target;
for (Node next : the neighbors of cur) {
if (next is not in visited) {
add next to s;
add next to visited;
}
}
remove cur from s;
}
return false;
}