malloc分配给指针

我有这个问题与C.

我有以下声明。

int *a;
a=malloc(100);

我得到以下错误:

错误:从'void *'无效转换为'int *'[-fpermissive]

任何提示?


您正在将代码编译为C ++,其中您使用的代码无效。 对于C来说,它是有效的,你不应该添加任何强制转换。

但是请注意, malloc()的参数在char s中,所以“100”有点随机。 如果你想要100个整数,那么:

a = malloc(100 * sizeof *a);

当用C ++编写C兼容代码时,你必须使用malloc因为一些纯C库会free它,所以我建议写一个快速类型的malloc:

template<typename T>
T* typed_malloc( size_t count = 1 ) {
  return reinterpret_cast<T*>( malloc(sizeof(T)*count) );
}

然后你可以像这样使用它:

int *a;
a=typed_malloc<int>(100);

它创建一个大小为100 int的缓冲区。

添加一些额外的东西,比如防止以这种方式使用非平凡的析构函数创建类(如你所期望的那样,它们是free而不被破坏的),也可以推荐使用。


malloc返回一个void *指针。

你应该做 :

a=(int*)malloc(100);

顺便说一句:这个声明是分配100Bytes而不是100个整数。 LE:如果你用gcc编译,这不是必需的。 如果你用g ++编译,这是必须的。

链接地址: http://www.djcxy.com/p/28463.html

上一篇: malloc assigned to pointer

下一篇: Understanding malloc