Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么没有捕获返回值时没有错误?_C++_Xcode - Fatal编程技术网

C++ 为什么没有捕获返回值时没有错误?

C++ 为什么没有捕获返回值时没有错误?,c++,xcode,C++,Xcode,据我所知,从返回类型函数接收的值必须存储在调用它的位置,否则它是错误的。请解释下面的代码是如何工作的 #include <iostream> #include <stdlib.h> #include<assert.h> //Returns a pointer to the heap memory location which stores the duplicate string char* StringCopy(char* string) {

据我所知,从返回类型函数接收的值必须存储在调用它的位置,否则它是错误的。请解释下面的代码是如何工作的

#include <iostream>
#include <stdlib.h>
#include<assert.h>
//Returns a pointer to the heap memory location which  stores the duplicate string
char* StringCopy(char* string) 
{                              
    long length=strlen(string) +1;
    char *newString;
    newString=(char*)malloc(sizeof(char)*length);
    assert(newString!=NULL);
    strcpy(newString,string);
    return(newString);
}
int main(int argc, const char * argv[])
{
    char name[30]="Kunal Shrivastava";
    StringCopy(name);   /* There is no error even when there is no pointer which 
                           stores the returned pointer value from the function 
                           StringCopy */
    return 0;
}
#包括
#包括
#包括
//返回指向存储重复字符串的堆内存位置的指针
char*StringCopy(char*string)
{                              
长长度=strlen(字符串)+1;
char*新闻字符串;
newString=(char*)malloc(sizeof(char)*长度);
断言(newString!=NULL);
strcpy(新闻字符串,字符串);
返回(新闻字符串);
}
int main(int argc,const char*argv[]
{
字符名称[30]=“Kunal Shrivastava”;
StringCopy(名称);/*即使没有指针
存储函数返回的指针值
StringCopy*/
返回0;
}

我在XCODE中使用C++。


谢谢。

不需要使用C++中函数调用(或任何其他表达式)的结果。

如果您希望避免由于返回指向动态内存的哑指针并希望调用方记得释放它而可能导致的内存泄漏,那么不要这样做。返回一个类型,该类型将自动为您清理任何动态资源。在这种情况下,
std::string
将是理想的选择;甚至不需要编写函数,因为它有一个合适的构造函数


一般来说,如果你写C++,不要写C。

< P>不需要使用C++中函数调用(或任何其他表达式)的结果。 如果您希望避免由于返回指向动态内存的哑指针并希望调用方记得释放它而可能导致的内存泄漏,那么不要这样做。返回一个类型,该类型将自动为您清理任何动态资源。在这种情况下,
std::string
将是理想的选择;甚至不需要编写函数,因为它有一个合适的构造函数


一般来说,如果你写C++,不要写C。您可以随时放弃函数的返回值,例如,如果您不关心函数是否成功。在您的情况下,您当然会泄漏内存,但是像
valgrind
这样的工具会告诉您。。。。在C++中,你可以使用智能指针,即使你忽略返回的对象(C++ 11代码> STD::UnQuyJPPT<代码),你也不会泄漏。您可以随时放弃函数的返回值,例如,如果您不关心函数是否成功。在您的情况下,您当然会泄漏内存,但是像
valgrind
这样的工具会告诉您。。。。在C++中,你可以使用智能指针,即使你忽略返回的对象(C++ 11代码> STD::UnQuyJPt<代码>对于这个情况)+1,我也不会泄漏,如果你能写的话,我会投票更多:如果你写C++,不要写C,如果你写C++,不要写C。我想在大多数自称为“C++程序员”的普通人的额头上纹身。C类的课程从80年底开始,但大多数时候我读C++的代码时,我觉得我和朋友Doc和马蒂一起开车玩DeloRo.+1,如果我能写的话我会投票更多:如果你写C++,不要写C,如果你写C++,不要写C。我想在大多数自称为“C++程序员”的普通人的额头上纹身。C级的课程是从80年底开始的,但大多数时候我读C++的代码时,我觉得我和朋友Doc和马蒂一起开车。