Sprache c – die neusten Beiträge

Speicherleck mit sanitize, aber nicht mit velgrind?

Ich habe mehrere C-Dateien erstellt, mit H-Dateien verbunden und danach auf Speicherlecks überprüft. Wichtig zu erwähnen ist dabei, das ich das ganze mit gkt und glade gemacht habe. Nun habe ich velgrind verwendet, um zu schauen, ob ich evt Speicherlecks habe. Als Ergebnis bekam ich, das keine Speicherlecks gefunden wurden. Um das nochmal zu überprüfen habe ich auch fsanitize benutzt, wobei Speicherlecks von 85.000 Bytes herauskamen.

Jetzt ist meine Frage dazu, wie das sein kann. An sich habe ich immer free benutzt, wenn ich Speicher belegt habe (etwa mit malloc oder strdup) und um den Speicher der gtk_widgets sollte sich eigentlich glade kümmern (soweit ich das richtig gelesen habe). Ich habe auch am Ende meines Codes, nach gtk_main(); noch g_object_unref(builder); angegeben, um den speicher, den der builder belegt freizugeben.

Ich habe mir jetzt schonmal Gedanken dazu gemacht. In meinem Kopf würde es Sinn machen, das fsanitize den nicht erkennt, wenn Gtk den Speicher freigibt und deswegen so viele Lecks findet. Jedoch habe ich auch gelesen, das fsanitize eigentlich präziser als velgrind ist. Jetzt bin ich natürlich verwirrt und würde mich über eine Expertenmeinung freuen.

Anbei vielleicht noch: es ist eher ein kleines programm, welches nur materialen (aus einer txt-Datei) in ein gtk_tree_view einfügt, wo man nach einer Artikelnummer suche kann, einen Eintrag löschen kann und auch einen neuen erstellen kann. Deswegen kann ich mir auch schonmal gar nicht vorstellen, das 85.000Bytes als Speicheleck erkannt werden können.

Ich freue mich über jede Hilfe :)

Programmiersprache, sprache c

C# Programm anhalten, nicht beenden in WinForms?

Hey, habe einen Lotto Simulator, der mir ausrechnet wie viele Versuche es braucht um 6 richtige aus 49 zu haben.

Jetzt dauert das ganze ja manchmal eeeewig :D habe einen Beenden Button hingemacht mit dem ich das Programm eben anhalte möchte und es mir dann alles ausgibt, was er bis dahin errechnet hat.

Ich finde aber nur Befehle wie this.Close(); wo das gesamte Programm schließt? Das will ich ja nicht.

Gibt es hier irgendeinen Befehl/Methode dazu? Oder habt ihr Ideen? Hier mal ein Teil von meinem Code:

 while (!(numbers.Contains(value1) && numbers.Contains(value2) && numbers.Contains(value3) && numbers.Contains(value4) &&

        numbers.Contains(value5) && numbers.Contains(value6)))

      {

        number1 = rnd.Next(minValue, maxValue);

        number2 = rnd.Next(minValue, maxValue);

        number3 = rnd.Next(minValue, maxValue);

        number4 = rnd.Next(minValue, maxValue);

        number5 = rnd.Next(minValue, maxValue);

        number6 = rnd.Next(minValue, maxValue);

        numbers[0] = number1;

        numbers[1] = number2;

        numbers[2] = number3;

        numbers[3] = number4;

        numbers[4] = number5;

        numbers[5] = number6;

        counter++;

        txtResult.Text = counter.ToString();

        txtMoney.Text = (money * counter).ToString();

        Application.DoEvents();

      }

      txtResult.Text = counter.ToString();

      txtMoney.Text = (counter * money).ToString();

      txtWait.Text = "Fertig!";

Ist nur ein kleiner Teil der eben die Berechnung und Erstellung neuer Zufallszahlen generiert.

LG

Computer, Schule, IT, programmieren, Informatik, Windows Forms, sprache c

Wie programmiere ich mehrere Runden in C++?

Hallo Leute,

ich beschäftige mich seit ca. 1 Monat mit C++ und habe jetzt Schere Stein Papier programmiert, ich werde gleich nach der frage den Code posten.

Nun zur Frage:Wenn ich das Programm starte läuft alles so wie ich es wollte, allerdings kann ich nur eine Runde spielen und weiß nicht, wie ich es so machen kann, dass ich z. B. 12 Runden spielen kann.
Weiß jemand, wie ich das anrichten soll, sodass ich mehrere Runden spielen kann? Ich wär für jede Antwort dankbar.

Am besten wäre, wenn jemand mein Code überarbeitet.

#include <iostream>
#include <stdlib.h>
using namespace std;

main()
{
  srand(time(NULL));

  int wahl_pc; 
  int wahl_spieler; 
  
  cout<<"bitte wähle ein der drei items \n";
  cout<<"1.nSchere\n";
  cout<<"2.Stein \n";
  cout<<"3.Papier \n";
  cout<<"hier eingeben":
  cin>>wahl_spieler;
  
  //Der zufallsgenerator 
  wahl_pc=1+(rand()%(4-1)); 
  
  // Die vergleiche zu schere
  if(wahl_spieler==wahl_pc)
  { cout<<"unetschieden"; } 
  if(wahl_spieler==1 && wahl_pc==2)
  { cout<<"computer gewinnt stein schlägt schere"; } 
  if(wahl_spieler==1 && wahl_pc==3)
  { cout<<"Du gewinnst schere schlägt stein"; } 
  
  //vergleiche zum stein if(wahl_spieler==2 && wahl_pc==1)
  { cout<<"Du gewinnst Stein schlägt Schere"; } 
  if(wahl_spieler==2 && wahl_pc==3)
  { cout<<"Computer gewinnt Papier schlägt Stein"; } 
  //Die vergleiche zu papier
  if(wahl_spieler==3 && wahl_pc==1)
  { cout<<"Computer gewinnt Schere schlägt papier"; } 
  if(wahl_spieler==3 && wahl_pc==2)
  { cout<<"Du gewinnst papier schlägt stein"; } 
  
  return 0;
}
programmieren, sprache c

Meistgelesene Beiträge zum Thema Sprache c