根据我对C的理解,在尝试初始化时,似乎应该使用malloc( size ),例如,一个数组的大小直到运行时才知道。
但是,我想知道为什么函数malloc()返回指向变量位置的指针,以及为什么需要这样做。
基本上,为什么C不把它全部隐藏起来,这样每当你做这样的事情:
// 'n' gets stdin'ed from the user
...
int someArray[n];
for(int i = 0; i < n; i++)
someArray[i] = 5;
您可以不需要调用malloc()或其他函数就可以这
因此,我尝试将来自libcURL HTTP请求的响应存储到一个C字符串中,以便稍后解析。响应代码完全是用C编写的,而其他代码都是用C++编写的,对于任何其他C++编译器来说,它应该都能正常工作。但是当我尝试编译时,即使我给出'-x c‘参数后跟文件名,我也会得到这些特定的响应。
g++ main.cpp -x c cJSON.c -x c respbuffer.c -lcurl -lm
./respbuffer.c:14:9: error: assigning to 'char *' from incompatible type 'void *'
我想知道这个C代码块的Java翻译是什么。
Person * father = malloc(sizeof(Person));
Marriage * marriage = malloc(sizeof(Marriage));
(* marriage).male = father;
我猜我用的是参考资料。所以,我不是让一个可变的父亲指向Person,而是为类Person创建一个父亲对象,如下所示:
Person father = new Person();
我可能弄错了。
线(* marriage).male = father;将如何工作?
我对C非常陌生,我只是想更好地理解它是如何工作的。
所以我正在做我的作业,我被一段代码卡住了。
struct image* createImg(unsigned int dim1, unsigned int dim2){
int **a=NULL;
int j;
a=malloc(dim1*sizeof(int*));
for (int i=0;i<dim1;i++)
{
a[i]=malloc(dim2*sizeof(int));
for (j=0;j<dim2;j++)
a[i][j]=0;
}
return a;
我对malloc不太了解,我知道也有类似的问题,但我还是想问。
当我编译代码时,我遇到了以下错误
scheduler.c: In function 'char* addprocess(char*, FILE*)':
scheduler.c:127:60: error: invalid conversion from 'void*' to 'process*'
scheduler.c:135:38: error: invalid conversion from 'void*' to 'char*'
scheduler
根据
最好不要在C中强制转换malloc,因为如果对malloc的返回进行强制转换,那么将被标记的错误将被隐藏,从而导致很难找到错误。另外,在维护过程中,如果指针的类型发生了变化,但是转换没有改变,那么仍然很难找到错误。大多数有经验的程序员选择的方法是:
p = malloc ( n * sizeof *p );
malloc不需要强制转换,因为不需要强制转换,而不是使用 size of ( type )来确定块的大小,而是使用size of *ptr。通过取消引用指针并获取指针的大小,可以给出适当的值,而不必担心如果指针的类型发生变化就会修改分配请求。
但是它不会在C++中编译。为什么?
如
我在网上搜索了很多次,但我找不到一个适用于g+的例子,所有的例子都适用于GCC。
我一直得到的错误是:
wrap_malloc.o: In function `__wrap_malloc(unsigned int)':
wrap_malloc.cc:(.text+0x20): undefined reference to `__real_malloc(unsigned int)'
wrap_malloc.o: In function `main':
wrap_malloc.cc:(.text+0x37): undefined reference to `__wrap_m
我最近一直在用像Lua这样的脚本语言编写代码,而匿名内部函数的存在让我开始思考。用C实现的语言(如Lua )如何具有内部函数,而在C中,无论您做什么,您都不能回避这样一个事实:在编译期间,函数必须事先声明好?这是否意味着在C中,实际上有一种方法可以实现内部功能,而这只是实现一个庞大的代码库以使其成为可能的问题?
例如
void *block = malloc(sizeof(1) * 1024); // somehow
// write bytes to this memory address to make it operate
// like an inner function?
// i
例如,当我们写:
int * p = new int[5];
将在哪个内存段分配内存?在C中,我知道当我们使用malloc()时,它会在heap部分分配内存,但是对于C++,我不确定。我读过,对于从空闲存储new() 分配的内存和从堆在链接上分配的malloc() 内存。
这个免费商店是什么?它只是RAM的一部分吗?有没有像C一样包含免费存储的内存管理图表?
在64位NASM中,我使用C库中的malloc()分配了一个8000字节的内存块,当我完成它时,我通过调用free()来释放它。
我的研究得出了许多关于如何在64位NASM中做到这一点的相互矛盾的信息,其中大部分信息是32位的,其中调用约定是不同的,或者是C或C++,而不是NASM。
我想我的malloc部分是正确的,但是我不确定是不是免费的部分。我之所以发布这个问题,是因为我不想测试它,并且分配了一个内存块,但没有释放。
所以我的两个问题很简单:
(1) do I have this right for 64-bit NASM?
(2) is the syntax the same fo
我有一个struct Person,有一个名字、id和孩子的数量。我正在尝试为孩子的名字、id和数量创建一个动态数组。继续收到错误消息"uninitialized local variable 'name‘used“
Person *person;
printf("Add a person to the game? (0|1)");
scanf("%c",&dummy);
scanf("%d",&input);
while (input