bcdedit /set hypervisorlaunchtype off
원복하려면 아래 실행 후 재부팅
bcdedit /set hypervisorlaunchtype auto
hyper-v on 상태에서도 버추얼박스 정상동작 하려면 아래 설정
프로그램 시작 부분에 아래 코드 넣고 실행 후 정상종료하면 메모리릭 발생시 출력창에 메모리릭 출력
원본 문자열을 ',' 로 분할하고 2차원 배열에 복사하는 소스이다.
리턴값이 0 이면 리틀엔디안, 1이면 빅엔디안
다운로드 : IniFile.cs
c# 에서 ini 파일 읽기/쓰기를 간편하게 할 수 있는 소스코드이다.
오랫동안 유용하게 사용했는데 링크를 잊어버렸다.
< 사용법 >
#ifndef MYBUFFERQUEUE_H
#define MYBUFFERQUEUE_H
#include <QQueue>
#include <QMutexLocker>
template<typename T>
class MyBufferQueue
{
public:
MyBufferQueue(int maxCount);
virtual ~MyBufferQueue();
int push(T *buffer);
T* pop();
void clear();
int count();
private:
QQueue<T*> m_queue;
QMutex m_mutex;
int m_nMaxCount;
};
template <typename T>
MyBufferQueue<T>::MyBufferQueue(int maxCount)
{
m_nMaxCount = maxCount;
}
template <typename T>
MyBufferQueue<T>::~MyBufferQueue()
{
clear();
}
template <typename T>
int MyBufferQueue<T>::push(T *buffer)
{
QMutexLocker locker(&m_mutex);
if (m_nMaxCount > 0) {
if (m_queue.count() >= m_nMaxCount)
return -1;
}
m_queue.enqueue(buffer);
return m_queue.count();
}
template <typename T>
T* MyBufferQueue<T>::pop()
{
QMutexLocker locker(&m_mutex);
T *image = NULL;
if (!m_queue.isEmpty()) image = m_queue.dequeue();
return image;
}
template <typename T>
void MyBufferQueue<T>::clear()
{
QMutexLocker locker(&m_mutex);
qDeleteAll(m_queue);
m_queue.clear();
}
template <typename T>
int MyBufferQueue<T>::count()
{
QMutexLocker locker(&m_mutex);
return m_queue.count();
}
class AudioBuffer {
public:
AudioBuffer() {
data = NULL;
size = 0;
}
AudioBuffer(char *_data, int _size) {
data = new char[_size];
memcpy(data, _data, _size);
size = _size;
}
virtual ~AudioBuffer() {
if (size > 0) delete[] data;
}
public:
char* data;
int size;
};
#endif // MyBufferQueue_H
< 사용법 >
MyBufferQueue<AudioBuffer>* m_pSendQue = new MyBufferQueue<AudioBuffer>(100);
...AudioBuffer *pSendBuffer = new AudioBuffer(data, size);m_pSendQue->push(pSendBuffer);......AudioBuffer* pBuffer = m_SendQue->pop();...delete pBuffer;