程序设计

专业和发烧友程序员的问答


6
如何将unique_ptr参数传递给构造函数或函数?
我是C ++ 11中移动语义的新手,而且我不太清楚如何处理unique_ptr构造函数或函数中的参数。考虑此类本身的引用: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; 这是我应该编写带有unique_ptr参数的函数的方式吗? 我需要std::move在调用代码中使用吗? Base::UPtr b1; Base::UPtr b2(new Base()); b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?




25
为什么不将alloca()用作良好实践?
alloca()在的情况下,在栈而不是堆上分配内存malloc()。因此,当我从例程返回时,内存被释放。因此,实际上这解决了我释放动态分配的内存的问题。释放通过分配的内存malloc()是一个头疼的大问题,如果以某种方式错过,则会导致各种内存问题。 alloca()尽管有上述功能,为什么不鼓励使用?
400 c  stack  malloc  allocation  alloca 


18
将文件:Uri转换为Android中的文件
什么是从一个转换的最简单的方法file: android.net.Uri,以一个File在Android的? 尝试了以下操作,但不起作用: final File file = new File(Environment.getExternalStorageDirectory(), "read.me"); Uri uri = Uri.fromFile(file); File auxFile = new File(uri.toString()); assertEquals(file.getAbsolutePath(), auxFile.getAbsolutePath());
400 android  file  uri  file-uri 


9
如何查看pytest运行期间创建的正常打印输出?
有时候,我只想在代码中插入一些打印语句,然后看看在执行该操作时打印出来的内容。我通常的“锻炼”方式是使用现有的pytest测试。但是,当我运行这些命令时,我似乎看不到任何标准输出(至少从我的IDE PyCharm内部)。 有没有一种简单的方法可以在pytest运行期间查看标准输出?
400 python  logging  output  pytest 



8
将较小的显示器切换到较大的显示器时,有什么方法可以重画tmux窗口?
假设您正在使用Terminal.app通过ssh连接到远程服务器。当您从以前启动过的较小的监视器中以较大的分辨率监视器“附加tmux”时,它将在控制台周围绘制点。它不适合新的窗口大小。有什么方法可以重画和清洁窗户吗?CTRL+ L或CTRL- B+ R没有帮助。我找不到关于男人的任何正确命令。 % tmux -V tmux 1.5
399 tmux 

2
Mockito测试void方法会引发异常
我有一个带有void返回类型的方法。它还可以引发许多异常,因此我想测试所引发的异常。所有尝试均以相同的原因失败: Stubber类型中的when(T)方法不适用于参数(void) 有什么想法可以获取引发指定异常的方法吗? doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));

15
Java字符串真的不可变吗?
我们都知道这String在Java 中是不可变的,但是请检查以下代码: String s1 = "Hello World"; String s2 = "Hello World"; String s3 = s1.substring(6); System.out.println(s1); // Hello World System.out.println(s2); // Hello World System.out.println(s3); // World Field field = String.class.getDeclaredField("value"); field.setAccessible(true); char[] value = (char[])field.get(s1); value[6] = 'J'; value[7] = 'a'; value[8] = 'v'; value[9] = 'a'; value[10] = …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.