Mark.G.
Ensign
- Registriert
- Okt. 2008
- Beiträge
- 249
Hallo,
ich wollte mal fragen, ob der Code so passt. Laut Ausgabe sollte es passen, da ich aber mit malloc immer wieder meine Probleme habe, frag ich mal sicherheitshalber nach.
Es kann sein, dass einige includes unnötig sind (das ist nur ein Teil des Codes).
Aufgabe des Codes:
Der Code soll dynamisch ein Spielfeld erstellen (in diesem Codestück wurde die Größe mal fixiert) und dafür den Speicher anfordern. Das Spielfeld soll über ein 2D Array aufrufbar sein und einen Wert (100) sowie ein Mutex besitzen.
Frage:
Wird der Speicher richtig angefordert?
ich wollte mal fragen, ob der Code so passt. Laut Ausgabe sollte es passen, da ich aber mit malloc immer wieder meine Probleme habe, frag ich mal sicherheitshalber nach.
Es kann sein, dass einige includes unnötig sind (das ist nur ein Teil des Codes).
Aufgabe des Codes:
Der Code soll dynamisch ein Spielfeld erstellen (in diesem Codestück wurde die Größe mal fixiert) und dafür den Speicher anfordern. Das Spielfeld soll über ein 2D Array aufrufbar sein und einen Wert (100) sowie ein Mutex besitzen.
Frage:
Wird der Speicher richtig angefordert?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <ctype.h>
struct feld
{
pthread_mutex_t mutex;
int value;
};
int main()
{
int x=10, y=10, i=0, j=0;
struct feld** spielfeld;
spielfeld = (struct feld**)malloc(sizeof(struct feld*)*y);
if(spielfeld == NULL) // Prüft ob die Reservierung erfolgreich war
{
[B]return EXIT_FAILURE;[/B]
}
for(i=0; i<y; i++)
{
spielfeld[i] = (struct feld*)malloc(sizeof(struct feld)*x);
if(spielfeld[i] == NULL) // Prüft ob die Reservierung erfolgreich war
{
[B] return EXIT_FAILURE;[/B]
}
}
for(i=0; i<y; i++)
{
for(j=0;j<x; j++)
{
pthread_mutex_init(&(spielfeld[i][j].mutex),0);
spielfeld[i][j].value = 100;
}
}
spielfeld[5][5].value=2;
spielfeld[9][9].value=22;
printf("%d",spielfeld[9][9].value);
free(spielfeld);//gibt speicher wieder frei
[B]return EXIT_SUCCESS;[/B]
}
Zuletzt bearbeitet: