Pourquoi ce programme entraîne-t-il une erreur de segmentation? J'essaie d'avoir un tableau de pointeurs qui est dynamiquement alloué de la mémoire afin que je puisse avoir un tableau de chaînes.Pourquoi mon programme génère-t-il une erreur de segmentation lors de l'affectation de la mémoire à un double pointeur C
J'ai cherché des problèmes similaires comme How to pass a double pointer to a function without segmentation fault C language
S'il vous plaît expliquer pourquoi il SEG-formation de failles
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void mem_alloc(char* p, char** dp);
int entries = 0;
int mem_allocated = 0;
int main() {
char* p = "ksdfahj93qhf9";
char* p1 = "siodfnrieopq";
char* p2 = "erf9ih94gri9g";
char** dp = NULL;
mem_alloc(p, dp);
mem_alloc(p1, dp);
mem_alloc(p2, dp);
for(int i = 0; i < entries; i++) {
printf("%s", dp[i]);
}
}
void mem_alloc(char *p, char** dp) {
if(entries == mem_allocated)
if(mem_allocated == 0)
mem_allocated = 3;
void** temp = realloc(dp, mem_allocated * (sizeof(p)));
if(!temp)
perror("Memory allocation failed!");
dp = (char**) temp;
strcpy(dp[entries++], p);
}
Je vois un peu de désordre sans déréférencer ce qui devrait être et déréférencer ce qui ne devrait pas être ... –
À quelle ligne est-ce que seg-faulting? – klutt
Vous ne pouvez pas mettre à jour le côté appelant 'dp' à l'intérieur de la fonction en tant qu'argument (' char ** dp'). corriger comme [this] (http://ideone.com/0Ft10C) – BLUEPIXY