Articles of memory

Création d’un object dans la mémoire partagée à l’intérieur d’une librairie partagée (so) en C ++

Est-il possible de partager une seule instance de «dieu» entre tous ceux qui sont liés à ce code, pour être placés dans un object partagé? god* _god = NULL; extern “C” { int set_log_level(int level) { if(_god == NULL) return -1; _stb->log_level(level); return 0; } int god_init(){ if(_god == NULL){ _god = new god(); //Magic […]

Comprendre la mémoire utilisée par un programme en bash (sous ubuntu linux)

Dans certains concours de programmation, les problèmes ont une limite de mémoire (64 Mo ou 256 Mo). Comment comprendre la mémoire utilisée par mon programme (écrit en C ++) avec les commandes bash? Est-il possible de limiter la mémoire utilisée par le programme? Le programme doit se terminer s’il utilise plus de mémoire que la […]

La taille de la texture 3D affecte la sortie du programme sans générer d’erreur

Premièrement, j’utilise glDebugMessage() au lieu de glGetError() pour déterminer les erreurs. Deuxièmement, j’atsortingbue un stockage de texture 3D comme suit: glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA32F, 512, 512, 303, 0, GL_RGBA, GL_FLOAT, NULL); Lorsque le coponent de profondeur est égal ou inférieur à 303, mon programme fonctionne exactement comme prévu (j’atsortingbue une couleur dans la texture et je […]

Comment créer un tableau tout en utilisant potentiellement un nouvel emplacement

J’ai travaillé sur la création d’un allocateur personnalisé en tant qu’exercice / pratique amusant et j’ai rencontré deux problèmes potentiels avec la création de tableaux. Pour un appel d’atsortingbution typique, j’utiliserai malloc et placement new . Cependant, lorsque je crée un tableau, je ne comprends pas comment procéder. Pour une fois, j’ai remarqué à certains […]

Est-ce que nvcc, gcc, clang et msvc «respectent» le mot clé __ressortingct__ au sein des structures?

Supposons que j’ai struct s { int* __ressortingct__ p1; double v; }; void foo(int* __ressortingct__ p2, struct s my_s) { /* … */ } Les compilateurs C ++ répertoriés ci-dessous respectent- __ressortingct__ mots-clés __ressortingct__ dans ce cas et supposent que les access à la mémoire via p2 ne peuvent pas affecter les access via p1 […]

Déterminer si le pointeur est valide

J’ai observé que si free( ptr ) est appelé alors que ptr n’est pas un pointeur valide sur la mémoire allouée par le système, une violation d’access se produit. Disons que j’appelle free comme ceci: LPVOID ptr = (LPVOID)0x12345678; free( ptr ); Cela provoquera très certainement une violation d’access. Existe-t-il un moyen de vérifier que […]

C ++: push_back (new Object ()) est-il une fuite de mémoire?

Le code C ++ suivant est-il une fuite de mémoire? list.push_back(new Ssortingng(“hi”)); Si je comprends bien, push_back à partir de n’importe quelle collection / conteneur std en fait toujours une copie. Donc, si la nouvelle chaîne est copiée, rien ne pourra jamais supprimer la nouvelle chaîne, n’est-ce pas? puisqu’il n’y a aucune référence à cela […]

Un peu confus sur la signification exacte de l’allocation dynamic de mémoire pour C ++

J’ai entendu des choses contradictoires concernant le sens exact de l’allocation dynamic, et d’ailleurs automatique, de la mémoire. J’ai entendu la stack être appelée à la fois allocation de mémoire automatique et allocation de mémoire dynamic. Je peux voir les deux que la taille de bloc de la mémoire de stack est déterminée avant l’exécution […]

Renvoyer un object de la fonction

Je suis vraiment confus maintenant sur comment et quelle méthode utiliser pour retourner un object à partir d’une fonction. Je veux des commentaires sur les solutions pour les exigences données. Scénario A: l’object renvoyé doit être stocké dans une variable qu’il n’est pas nécessaire de modifier pendant sa durée de vie. Ainsi, const Foo SomeClass::GetFoo() […]

Utilisation de sanitizer de mémoire avec libstdc ++

Je souhaite utiliser le drapeau -fsanitize=memory dans Clang pour parsingr un programme comme celui-ci: #include #include #include using namespace std; void writeToFile(){ ofstream o; o.open(“dum”); o<<"test"<<endl; //The error is here. //It does not matter if the file is opened this way, //or with o("dum"); o.close(); } int main(){ writeToFile(); } Autant que je sache, ce […]