我正在用c ++编写一个shell,我需要一个构造函数用于我的CommandLine类,它解析来自istream的命令,然后使用calloc()和free()系统调用来动态创建argc和argv变量。我没有得到如何使用系统调用来做到这一点,没有教程帮助。
答案 0 :(得分:1)
这是一个非常类似于你所要求的例子。我在这里找到了它:http://www.cplusplus.com/reference/clibrary/cstdlib/calloc
函数calloc
void * calloc(size_t num,size_t size);
为内存中的数组分配空间为内存分配一块内存 num个元素的数组,每个元素的大小都是字节长,并初始化 它的所有位都为零。
有效的结果是零初始化内存的分配 块(num * size)bytes。
参数
NUM 要分配的元素数。尺寸 元素的大小。
返回值指向由函数分配的内存块的指针。 此指针的类型始终为void *,可以强制转换为 所需类型的数据指针,以便可解除引用。如果 函数无法分配请求的内存块,为NULL 返回指针。
实施例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/* calloc example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
int * pData;
printf ("Amount of numbers to be entered: ");
scanf ("%d",&i);
pData = (int*) calloc (i,sizeof(int));
if (pData==NULL) exit (1);
for (n=0;n<i;n++)
{
printf ("Enter number #%d: ",n);
scanf ("%d",&pData[n]);
}
printf ("You have entered: ");
for (n=0;n<i;n++) printf ("%d ",pData[n]);
free (pData);
return 0;
}