Я новый программист на C. Я пытаюсь удалить один элемент из статического массива и скопировать остальное на динамический массив. Программа работала нормально, но после free()
я получаю ошибку сегментации. Я думаю, что указатель temp
указывает на некоторую память в стеке, поэтому я получаю ошибку сегментации (потому что я пытаюсь освободить что-то, что не создано malloc). Но проблема memcpy должна копироваться из стека в кучу, так что temp
остается указывать на кучу. Вот код:ошибка сегментации после memcpy и бесплатно
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
char name [6]={'a','m', 'i', 'n','f','e'};
char *temp= (char *) malloc(sizeof(char)*5);
memcpy(temp,name1,4);
memcpy(temp+4,name1+5,1);
int i;
for (i=0; i<5; i++) {
printf("%c\n",*temp);
temp++;
}
free(temp);
}
Вывод программы: амин
Um, нигде в этом вы называете 'free', поэтому неясно, что вы подразумеваете под« после free(), я получаю ошибку сегментации ». –
Я добавил его сейчас. Он расположен в конце кода – amitakCs
'temp ++' означает, что вы не освобождаете указатель, который вы выделили. –