GA/GP 用のクラスを開発するためのこのコードに出くわしましたが、理解できなかったため、プログラムをデバッグできませんでした。
typedef struct {
void *dataPointer;
int length;
} binary_data;
typedef struct {
organism *organisms; //This must be malloc'ed
int organismsCount;
int (*fitnessTest)(organism org);
int orgDnaLength;
unsigned int desiredFitness;
void (*progress)(unsigned int fitness);
} evolutionary_algorithm;
上記は簡単です。次に、生物の適性をテストする前に生物を開始しようとします...
int main(int argc, char *argv[])
{
srand(time(NULL));
int i;
evolutionary_algorithm ea;
ea.progress = progressDisplayer;
ea.organismsCount = 50;
ea.orgDnaLength = sizeof(unsigned int);
organism *orgs =(organism *) malloc(sizeof(organism) * ea.organismsCount);
for (i = 0; i < 50; i++)
{
organism newOrg;
binary_data newOrgDna;
newOrgDna.dataPointer = malloc(sizeof(unsigned int));
memset(newOrgDna.dataPointer, i, 1);
newOrgDna.length = sizeof(unsigned int);
newOrg.dna = newOrgDna;
orgs[i] = newOrg;
}
私が理解している限りでは、memset() はバイナリ値をそのメモリ ロケーション void ポインター (newOrgDna.dataPointer) などに書き込もうとします。しかし、これらすべてのバイナリ値を再構築して、newOrg の変数「dna」に割り当てられた整数値を取得する方法がわかりません。これにより、個々の生物に割り当てられた整数値をチェックし、最終的には、メモリの場所全体に存在する集団全体を確認できます。 「組織」に割り当てられています。
上記から推測できるように、私はこの深いレベルの詳細でメモリ管理にあまり慣れていないので、あなたの助けに非常に感謝しています。
どうもありがとう