Est la différence de deux non-nulle pointeur de variables définies (par C99 et/ou C++98) si ils sont à la fois NULL
- évalué?
Par exemple, disons que j'ai une mémoire tampon de la structure qui ressemble à ceci:
struct buf {
char *buf;
char *pwrite;
char *pread;
} ex;
Dire, ex.buf
de points à un tableau ou à certains malloc ed mémoire. Si mon code s'assure de toujours pwrite
et pread
point dans cette matrice ou un passé, alors je suis assez confiant qu' ex.pwrite - ex.pread
sera toujours défini. Cependant, si pwrite
et pread
sont NULLES. Puis-je juste attendre soustrayant les deux est défini comme (ptrdiff_t)0
ou n'a strictement conforme code de la nécessité de tester les pointeurs NULL? Notez que le seul cas m'intéresse, c'est quand les deux pointeurs sont NULS (ce qui représente un tampon non initialisé cas). La raison a à voir avec un pleinement conforme "à disposition" de la fonction compte tenu des hypothèses précédentes sont remplies:
size_t buf_avail(const struct s_buf *b)
{
return b->pwrite - b->pread;
}