今、かなり基本的な問題を扱っていますが、なぜ私がフォールトしているのかについて頭を浮かべているようです。 Cプログラミング/メモリの割り当てにまだかなり新しいので、これは非常にシンプルなようだと申し訳ありません。構造体の文字列にメモリを割り当てる
私はメモリを間違って割り当てていると思う、私はちょうどよく分からない。どんな助けも素晴らしいです!
関数におけるemallocがnullチェックと異なるファイル内だけmalloc関数である:構造で
void *emalloc(size_t s) {
void *result = malloc(s);
if(NULL == result) {
fprintf(stderr, "Memory Allocation Failure!");
exit(EXIT_FAILURE);
}
return result;
}
struct htablerec {
int capacity;
int num_keys;
char **keys;
int *frequency;
};
htable htable_new(int capacity){
int i;
htable htab = emalloc(sizeof *htab);
htab->capacity = capacity;
htab->num_keys = 0;
htab->frequency = emalloc(capacity * sizeof htab->frequency[0]);
for(i=0; i<capacity; i++){
htab->keys[i] = emalloc((WORD_LEN + 1) * sizeof (char));
}
for(i=0;i< capacity;i++){
htab->frequency[i]= 0;
htab->keys[i] = NULL;
}
return htab;
}
'htab-> keys [i]'を反復する前に 'htab-> keys'にメモリを割り当てなかったかのように、不完全な断片から見えます。 –
これはPHPでも可能ですか - emalloc? – akshayk07
'emalloc'とは何ですか? –