私はこのコードスニペットに私の問題を狭めるために管理:voidポインタの空配列を解放するには?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
void **arr;
int max = 10; //tr = 0;
int size = sizeof(int);
arr = malloc(max*sizeof(void*));
for (int i=0; i<=6; i++)
{
arr[i] = malloc(size);
memcpy(arr+i, &i, size);
}
for (int i=0; i<=6; i++)
{
printf("%d ", *(int*)(arr + i));
}
free(arr[0]);
free(arr[1]);
free(arr);
return 0;
}
私はarr
を解放したときにそれは大丈夫だ、と私はarr[0]
を解放するとき、それは大丈夫です。しかし、それ以外のものはセグメンテーションがあります。
割り当てを間違っていますか?それとも別のことですか?
'niz'宣言されていないはずです。コンパイル可能なコードを投稿します。 – EOF
@ EOF私はそれを修正しました、今は正しく動作していません:) –