Retourner au contenu associé (journal : C23: un memset_explicit() qui carbure)
Posté par flavien75 le 26 janvier 2025 à 12:49. En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 4.
C'est confirmé sur ce code :
// gcc -O2 -S test_memset.c #include <stdlib.h> #include <stdio.h> #include <string.h> void *memset_explicit(void * s, int c, size_t n); int main(int argc, char * argv[]) { char * buf = NULL; unsigned checksum; char * p; if (argc < 2) { printf("Please add a parameter (any word)\n"); return 1; } buf = (char *) malloc((strlen(argv[1])+1)*sizeof(char)); if (!buf) return 2; strcpy(buf, argv[1]); checksum = 0; p=buf; while (*p) { checksum += *p; p++; } printf("checksum = %u\n", checksum); memset_explicit(buf, 0, strlen(buf)); free(buf); return 0; } #pragma GCC push_options #pragma GCC optimize ("-O0") void *memset_explicit(void * s, int c, size_t n) { memset(s, c, n); } #pragma GCC pop_options
Si on commente le pragma GCC optimize, l'appel à memset disparaît de l'assembleur, et c'est à partir de O2 sur ma version de GCC (standard Debian 12).
Les vrais naviguent en -42
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Bienvenue dans mon monde
Posté par flavien75 . En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 4.
C'est confirmé sur ce code :
Si on commente le pragma GCC optimize, l'appel à memset disparaît de l'assembleur, et c'est à partir de O2 sur ma version de GCC (standard Debian 12).
Les vrais naviguent en -42