有人能解释这两个alloc之间的区别吗?为什么是好的和坏的?
有人能解释这两个alloc之间的区别吗?为什么是好的和坏的?在每一个坏的和好的情况下会发生什么 错误分配 良好的alloc有人能解释这两个alloc之间的区别吗?为什么是好的和坏的?,c,memory,C,Memory,有人能解释这两个alloc之间的区别吗?为什么是好的和坏的?在每一个坏的和好的情况下会发生什么 错误分配 良好的alloc 坏的是,在第一种情况下,指针arr通过值传递,它的值在函数中被修改,返回值时被“遗忘”。在第二种代码中,指针的引用被传递,因此在函数外时,赋值被保留。坏的是,在第一种情况下,指针arr是按值传递的,它的值在函数中被修改,返回值时被“遗忘”。在第二种代码中,指针的引用被传递,因此在函数外时,赋值被保留。坏的是,在第一种情况下,指针arr是按值传递的,它的值在函数中被修改,返回
坏的是,在第一种情况下,指针
arr
通过值传递,它的值在函数中被修改,返回值时被“遗忘”。在第二种代码中,指针的引用被传递,因此在函数外时,赋值被保留。坏的是,在第一种情况下,指针arr
是按值传递的,它的值在函数中被修改,返回值时被“遗忘”。在第二种代码中,指针的引用被传递,因此在函数外时,赋值被保留。坏的是,在第一种情况下,指针arr
是按值传递的,它的值在函数中被修改,返回值时被“遗忘”。在第二种代码中,指针的引用被传递,因此在函数外时,赋值被保留。坏的是,在第一种情况下,指针arr
是按值传递的,它的值在函数中被修改,返回值时被“遗忘”。在第二个代码中,对指针的引用被传递,因此在函数外时分配的值被保留。在“坏”示例中,您实际上是在丢弃malloc的结果,因为“str”参数是passe dby value,在调用后将保留其空值。在第二种情况下,函数接收到指向“str”的指针,因此它能够操作“str”并在其中保留正确的值。在“坏”示例中,您实际上是在丢弃malloc的结果,因为“str”参数是passe dby value,在调用后将保留其NULL值。在第二种情况下,函数接收到指向“str”的指针,因此它能够操作“str”并在其中保留正确的值。在“坏”示例中,您实际上是在丢弃malloc的结果,因为“str”参数是passe dby value,在调用后将保留其NULL值。在第二种情况下,函数接收到指向“str”的指针,因此它能够操作“str”并在其中保留正确的值。在“坏”示例中,您实际上是在丢弃malloc的结果,因为“str”参数是passe dby value,在调用后将保留其NULL值。在第二种情况下,函数接收到指向“str”的指针,因此它能够操作“str”并在其中保留正确的值。由于其他人已经回答了您的问题,我添加了一个替代选项:
void get_memory(char **arr, size_t length){
if((*arr = malloc(length)) == NULL && 0 != length)
{
puts("Not enough memory. Sorry.\n");
exit(-1);
}
}
推理:长度
不得为负。当它是0
时,malloc
的结果可以是NULL
malloc
返回void*
,它在C中自动转换为适当的指针类型
根据后来的C标准,
sizeof(char)
为1。由于其他人已经回答了您的问题,我添加了一个替代选项:
void get_memory(char **arr, size_t length){
if((*arr = malloc(length)) == NULL && 0 != length)
{
puts("Not enough memory. Sorry.\n");
exit(-1);
}
}
推理:长度
不得为负。当它是0
时,malloc
的结果可以是NULL
malloc
返回void*
,它在C中自动转换为适当的指针类型
根据后来的C标准,
sizeof(char)
为1。由于其他人已经回答了您的问题,我添加了一个替代选项:
void get_memory(char **arr, size_t length){
if((*arr = malloc(length)) == NULL && 0 != length)
{
puts("Not enough memory. Sorry.\n");
exit(-1);
}
}
推理:长度
不得为负。当它是0
时,malloc
的结果可以是NULL
malloc
返回void*
,它在C中自动转换为适当的指针类型
根据后来的C标准,
sizeof(char)
为1。由于其他人已经回答了您的问题,我添加了一个替代选项:
void get_memory(char **arr, size_t length){
if((*arr = malloc(length)) == NULL && 0 != length)
{
puts("Not enough memory. Sorry.\n");
exit(-1);
}
}
推理:长度
不得为负。当它是0
时,malloc
的结果可以是NULL
malloc
返回void*
,它在C中自动转换为适当的指针类型
<> >以后的C标准,<代码> siZeof(char)< /C> > 1。< /p>为什么标记C和C++?C -MaloC C++ New第一个指针指向一个本地,所以调用方不会看到它首先是内存泄漏。STR仍然是空的StrucPbTW -哪里是丑陋的?为什么标记C和C++?C -MaloC C++ New第一个指针指向一个本地,所以调用方不会看到它首先是内存泄漏。STR仍然是空的StrucPbTW -哪里是丑陋的?为什么标记C和C++?C -MaloC C++ New第一个指针指向一个本地,所以调用方不会看到它首先是内存泄漏。STR仍然是空的StrucPbTW -哪里是丑陋的?为什么标记C和C++?C -MaloC C++ New第一个指针指向一个本地,所以调用方不会看到它首先是内存泄漏。strcpyBTW的Str仍然为空-丑陋的在哪里?