int *p = sbrk(0);
应用案例:
写一个程序查找1-10000之间所有的素数并且存放到缓冲,然后打印。 缓冲的实现使用sbrk/brk
流程:
循环
判断三否素数
是:分配空间存放
不是:继续下步
#include <iostream>
#include <unistd.h>
using namespace std;
int printf(const char *, ...);
void brk(void *);
void* sbrk(int);
int isPrimer(int a)
{
int r = 0;
int i = 0;
for(i = 2; i < a; i++)
{
if(a % i == 0)
{
return 1;
}
}
return 0;
}
int main()
{
int i = 2;
int b;
int * r;
int *p ;
p = sbrk(0);
r = p;
for(; i < 1000; i++)
{
b = isPrimer(i);
if(b == 0)
{
brk(r+1);
*r = i;
r = sbrk(0);
}
}
i = 0;
r = p;
while ( r!= sbrk(0))
{
cout << *r << endl;
r++;
}
return 0;
}
总结:
智能指针
stl
new
malloc
brk/sbrk
异常处理
int brk(void *) 返回0 失败返回-1
void *sbrk(int) 返回指针 失败返回(void*)-1
unix函数错误,修改内部变量 errno
字符串函数