C - 为整数分配动态内存并使用它

时间:2013-11-11 14:45:39

标签: c memory-management

我正在尝试为整数分配内存但是我得到一个警告赋值从指针生成整数而没有强制转换当我为一个int做一个强制转换时我得到一个警告从指针强制转换到不同大小的整数

这是我的第一个代码:

int i;
for(i = 0 ; i < gNumOfAllFiles ; i++)
{
    int *v=(int *)malloc(1*sizeof(int));
    v=0;
    dependencies[i].visited =(int)v;
}

dependencies[i].visited =v

依赖项[i] 是一个包含字段 int visited 的结构,我试图将其初始化为0

3 个答案:

答案 0 :(得分:5)

这是错误的,因为它试图将指针地址转换为整数:

dependencies[i].visited =(int)v;

改为执行此操作(以获取v指向的内容):

dependencies[i].visited =*v;

编辑:另外,设置指针的内容 使用      * V = 0;而不是v = 0;

答案 1 :(得分:1)

v包含一段记忆的地址 (int)v将此地址强制转换为整数,这是一个无意义的操作。

您希望使用取消引用运算符获取占用此地址内存的值:

int value = *v;

类似地,v = 0使您的指针指向内存地址0(为NULL),并使用malloc()泄漏您分配的内存。

您可以使用解除引用运算符将​​值存储在指针指向的内存中:

*v = 0;

答案 2 :(得分:0)

使用dependencies[i].visited =*v;