私はMallocを使ってポインタの配列を作成しています。しかし、私はvalgrindを受け取っています条件付きジャンプまたは移動は、配列のインデックスの1つで何かを参照しようとするたびに、初期化されていない値に依存します。私のコードでは、何らかのインデックスがインデックスに格納されることがあります。例えば、値1、4、6にはポインタが格納されていても、他のポインタにはポインタが格納されていない可能性があります。私の目標は、valgrindのエラーなしでそれを判断できるようにすることです!Malloc配列、初期化されていない値の条件ジャンプ
typedef struct{
char* symbol;
void* datapointer;
void* nextstruct;
}Entry;
void main(){
int sizeHint = 10000; //size of array
Entry** arrayOfPointers = malloc(sizeHint * sizeof(Entry*));
//For the sake of keeping this simple, say I stored something
//in a bunch of indexes in the array but NOT at 5
if(arrayOfPointers[5] != NULL){
//this is where my error comes, as it reads
//conditional jump or move depends on uninitilised value
//my goal is to be able to determine if something is stored at an index, and
//do something if its not stored
}
}
代わりに 'calloc()'を使うべきです:乗算を行い、オーバーフローをチェックし、メモリをゼロに初期化します。 –
@ JonathonReinhart:現在のC標準は、すべての '0 'のビットパターンがポインタ変数をヌルポインタと等しくすることを強制しません:http://stackoverflow.com/questions/42471057/malloc-array-conditional -jump-on-uninitialized-values/42471123#comment72082868_42471123 – alk