C语言中指针与动态内存管理的深入解析
1. 质数输出与内存释放
在处理质数输出时,我们可以使用如下代码:
for(int i = 0 ; i < total ; ++i)
{
printf ("%12llu", *(pPrimes + i));
if(!((i+1) % 5))
printf("\n"); // Newline after every 5
}
printf("\n"); // Newline for any stragglers
此 for
循环用于输出 total
个质数。 printf()
函数将每个质数追加到当前行,而 if
语句会在每五次迭代后输出一个换行符,这样每行就会有五个质数。由于质数的数量可能不是五的整数倍,所以在循环结束后输出一个换行符,以确保输出末尾至少有一个换行符。
最后,要释放之前分配用于存储质数的内存:
free(pPrimes); // Release the heap memory ...
pPrimes = NULL; // ... and reset the pointer
当释放堆内存后,应将指向该内存的指针设置为