Essayer d'analyser certains programmes C avec z3 en python, et avoir des problèmes avec les pointeurs. Je travaille avec des termes tels que:Comment implémenteriez-vous le déréférencement des pointeurs dans z3?
float * buffer = (float*)malloc(5*sizeof(float))
J'interprète tampon comme valeur BitVec(32)
donc *buffer
devrait être Real()
. Cela devrait être ok, mais ce que les affirmations dois-je écrire pour les termes tels que
*(buffer+3) or *(buffer+i)
Comment devraient être les affirmations écrites si je suis indexation sur comme
*(buffer-1) or *(buffer+10)
Si vous programmez en C, n'utilisez que cette balise. Ne pas spammer avec des tags non liés (langue ou autre). –
De plus, en C, il n'est pas nécessaire de convertir la valeur de retour de 'malloc' - il ne peut masquer que les erreurs. –