我正在尝试realloc,给它更大和更大的尺寸,并检查是否重复使用相同的块:
int main ( void )
{
char * newstr, * prevstr = NULL;
size_t newsize, prevsize = 0;
printf ("We play with realloc\n");
while (1) {
newsize = prevsize + 1 + prevsize/3; /* add 33% */
newstr = realloc(prevstr, newsize);
if (newstr == NULL) {
printf ("could not alloc newsize=%zu. Sorry\n", newsize);
break;
} else {
printf ("newsize=%zu successfully alloc'ed\n", newsize);
if (newstr == prevstr) {
printf ("newstr = prevstr:\tSame block reused\n");
} else {
printf …Run Code Online (Sandbox Code Playgroud) 在C代码中
printf("%s", message);
Run Code Online (Sandbox Code Playgroud)
我想知道我是否应该使用
fputs(message, stdout);
Run Code Online (Sandbox Code Playgroud)
前面的代码更清晰但速度更慢?或者使用更多内存?我更喜欢更清晰的代码,但当它看起来像浪费时间和内存时更糟糕.
我很想知道编译器检测到这种情况,并且在运行时没有完成必要的格式解析和解释.毕竟,gcc对printf("")这些编译器的抱怨可能会"理解"格式并对其进行预处理.
PS:前者的风格更清晰,写作时更明显format("name=%s\n",unameData.nodename);而不是
fputs(stdout,"name=");fputs(stdout,unameData.nodename);putchar('\n');.这是具有格式的所有目的.