Articles of mémoire

Pourquoi la mémoire de mon programme n’est-elle pas libérée?

#include #include #include #include #include using namespace std; struct Node { ssortingng str; vector vec; Node(){}; ~Node(){}; }; int main () { deque deq; for(int i = 0; i < 100; ++i) { Node tmp; tmp.vec.resize(100000); deq.push_back(tmp); } while(!deq.empty()) { deq.pop_front(); } { deque().swap(deq); } cout<<"releas\n"; sleep(80000000); return 0; } En top , j’ai trouvé […]

Différence entre les fonctions void et non void en C ++

J’ai une simple question Disons que j’ai deux fonctions en C ++: void DoSomething(); et bool DoSomething(); Existe-t-il une différence de mémoire ou de vitesse entre ces deux fonctions? Et deuxième question, liée à la première: je suppose qu’il y a une différence de vitesse, car bool doit renvoyer une certaine valeur. Mais je n’ai […]

Utilisation du fichier d’échange pour la mise en cache?

Je dois gérer une énorme quantité de données qui ne rentre généralement pas dans la mémoire principale. La façon dont j’accède à ces données a une grande localité, aussi la mise en cache de certaines de ses données en mémoire semble être une bonne option. Est-il faisable de simplement malloc () un grand tableau et […]

C ++ lecture / écriture dans un tableau hors limites

Il y a probablement déjà une réponse à cette question quelque part, mais je ne la trouve pas. Comme indiqué dans cette question: l’ access à un tableau en dehors des limites ne génère aucune erreur, pourquoi? , C ++ n’impose pas les limites d’un tableau, mais choisit plutôt de fournir un comportement indéfini. Ce […]

La capture d’écran C ++ échoue après des centaines de répétitions sous Windows: fuite de mémoire?

J’utilise une fonction qui capture un écran à l’aide du mehtod BitBlt et peut ensuite renvoyer un HBITMAP . int screenCapture() { int width = 1000; int height = 700; HDC hdcTemp, hdc; BYTE* bitPointer; hdc = GetDC(HWND_DESKTOP); hdcTemp = CreateCompatibleDC(hdc); BITMAPINFO bitmap; bitmap.bmiHeader.biSize = sizeof(bitmap.bmiHeader); bitmap.bmiHeader.biWidth = width; bitmap.bmiHeader.biHeight = -height; bitmap.bmiHeader.biPlanes = 1; […]

Destruction d’une liste chaînée

J’essayais d’implémenter une liste chaînée pour résoudre un problème d’algorithme. Cela a fondamentalement fonctionné, cependant, il s’est avéré que j’utilisais trop de mémoire. J’apprécierais que quelqu’un souligne les défauts de la conception du destructeur suivant. template struct Node { Node(): item(0),next(0) {} Node(T x): item(x),next(0) {} T item; Node* next; }; template struct List { […]

Perdu dans les pointeurs de périphérique CUDA

Dans le cadre de ma thèse, je travaille dans un projet CUDA (modification du code de quelqu’un d’autre, ajout de fonctionnalités, etc.). Être nouveau chez CUDA, cela devient un véritable défi pour moi. Je travaille avec la capacité de calcul 1.3 cartes, 4 x Tesla C1060. Et malheureusement, je suis frappé certaines limitations de la […]

En C / C ++, comment obtenir les données dans un espace de mémoire virtuelle?

Je travaille avec les informations de débogage. J’essaie d’écrire un peu comme un “parsingur d’informations de débogage”, j’utilise les bibliothèques DWARF et ELF pour le faire, mais ils n’offrent rien d’autre que des informations sur l’espace mémoire, j’essaie d’obtenir les données dans cet espace mémoire. . Je suis accro au programme. J’utilise un outil appelé […]

Leveldb limit testing – limit Memory utilisée par un programme

Je suis actuellement en train de tester une application basée sur Leveldb. Je veux le configurer de telle sorte que les valeurs-clés soient toujours lues à partir du disque et non de la mémoire. Pour cela, je dois limiter la mémoire utilisée par le programme. J’utilise des paires clé-valeur de 100 octets chacune et 100 […]

Recherche de la cause d’une erreur de bibliothèque partagée corrompue (Qt5 C ++)

J’ai un morceau de code assez simple qui lance un QProcess: launchResultCode = ELaunchOk; QDateTime beginTimeStamp = QDateTime::currentDateTime(); command->start(commandpath, myParameters); if (command->waitForStarted(waitToStart)) { if (!myStdIn.isEmpty()) command->write(myStdIn.toLatin1()); command->closeWriteChannel(); qDebug() <waitForFinished(waitToFinish)) { myStdOut = command->readAllStandardOutput(); myStdErr = command->readAllStandardError(); } else { launchResultCode = ELaunchFinishFailed; } } else { launchResultCode = ELaunchStartFailed; } qDebug() << "postcorrupt"; Et cela […]