2014-02-23 2 views
0

나는 개발중인 라이브러리에 대한 단위 테스트를 작성하고 있습니다. 라이브러리 구현을 조롱 할 수 없습니다. 단위 테스트는 프로그램의 메모리가 부족한 경우 특수 값을 반환하는 것입니다.C에서 메모리 부족 상태를 만드는 가장 빠른 방법은 무엇입니까?

나는이 순진 솔루션을 내놓았다 :

// Fillup memory 
int *p = NULL 
do { 
    p = malloc(sizeof(int)); 
    // store p somewhere to release it later 
} while(p); 
// Got out of memory :) 

malloc을 할당 메모리 블록의 크기를 증가없이이 솔루션 보다 빠르게 메모리를 채우기 위해 어쨌든 있나요?

는 PS : 타사 메모리 할당을 사용하여이 분명히 :)

답변

1

를 금지합니다 -하지만 C++ 구현에 따라 - 당신은 여러 스레드에서 그렇게 할 수 있습니다. 그 외에 - 아니.

+0

질문은 C가 아닙니다. C++ : –

+0

1 개 이상의 스레드를 만드는 것이 어떻게 도움이 될지 모르겠습니다. 나는'malloc'이 요청을 큐에 넣을 것이라고 확신합니다 : http://stackoverflow.com/questions/4859263/can-multithreading-speed-up-memory-allocation –

+0

확실하지 않습니다 - 이것이 구현이라고 말한 이유입니다 매달린. 서로 다른 풀에서 서로 다른 htreads 메모리를 할당하는 매우 자유로운 구현을하는 컴파일러가 있습니다. 즉, 이미 단단한 루프가 있기 때문에 작동하는 유일한 방법입니다. 남은 건 아무것도 없어. – TomTom

1

sizeof (int) 대신 더 큰 메모리 청크를 할당 해보십시오. 예 : 1KB이고 할당이 실패 할 때 루프의 크기 인수를 줄입니다. 충분히 작은 크기에 할당이 실패 할 때까지하십시오. 1 일 수 있습니다. B.

+0

그래도 로그 N 시간에 Out of Memory 조건을 만들어야합니다. –

관련 문제