1
我試圖建立一個rudimendary存儲器分配器,其suppors一些功能:動態分配一個數組,改變和顯示的值它存儲
- INITIALIZE(創建具有N個元素char數組),定格(釋放該分配給數組存儲器)
- DUMP(顯示在該時刻存儲在數組中的所有值)
- ALLOC(分配一定數目的字符的元素給用戶的,這樣他就可以在其中存儲的某些值)
我遇到了DUMP和ALLOC函數的問題:DUMP不打印存儲在數組中的值(它打印的是一些垃圾值),而且我也找不到如何修改存儲在數組中的值(ALLOC所需的值)。
下面我發佈了我的功能的源代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void initialize(int N, char **v)
{
int i;
*v = (char*)malloc(N * sizeof(char));
printf("Initialized array with %d char elements \n", N);
for(i = 0; i < N; i++)
{
v[i] = 0;
printf("%hhd ", v[i]);
}
}
void finalize(char *v)
{
printf("Memory of the array has been freed \n");
free(*v);
}
void dump(char **v, int N)
{
int i;
printf("Memory map:\n");
for(i = 0; i < N; i++)
{
printf("%hhd ", v[i]);
}
}
在我的主要功能,我有char *v
,int N
和調用功能: initialize(N, &v)
, finalize(&v)
和 dump(&v,N)
。 N
是數組將要存儲的元素的數量。
使用'的printf( 「%P」(無效*)V [1]);'打印指針。 – MikeCAT
'finalize()'中的'free(* v);'是錯誤的,因爲它傳遞了一些可能不是有效指針的'free()'。 – MikeCAT
不要將'malloc'和朋友的結果放在C中,並且'sizeof(char)'沒有用處,因爲它與'1'決不會有區別。 – Olaf