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