小编P45*_*ent的帖子

使用 JNIEnv::FindClass:我需要释放返回的 jclass 引用吗?

假设我在实现native函数存根的 JNI 函数中有此代码:

JNIEnv* env; /*This is set to a valid JNIEnv* for this thread*/
jclass clz = env->FindClass("foo"); /*this has worked*/
Run Code Online (Sandbox Code Playgroud)

我需要打电话吗

env->DeleteLocalRef(clz);
Run Code Online (Sandbox Code Playgroud)

一旦我完成了它?我不会回到clzJava,所以我想我需要删除本地引用?这似乎有点奇怪,因为像 a 一样MethodID, ajclass不包含对象实例。

c++ java-native-interface

4
推荐指数
2
解决办法
2661
查看次数

lambda的类型是什么?

我见过这样的代码:

std::sort(x, x + N, 
    // Lambda expression begins
    [](float a, float b) { 
        return std::abs(a) < std::abs(b); 
    });
Run Code Online (Sandbox Code Playgroud)

显然,第三个参数std::sort是一个可以保存lambda的类型.但这是什么类型的?std::sort是如此严重超载我无法破译它.

(我正在考虑建立一个函数列表:我正在考虑使用lambdas而不是函数指针,因为后者必须具有大致相同的参数列表).

我想我可以写

auto letTheComplerSortOutTheType =
        [](float a, float b) { 
            return std::abs(a) < std::abs(b); 
        });
Run Code Online (Sandbox Code Playgroud)

但在使用容器时,这对我没有帮助.

c++ lambda c++11

4
推荐指数
1
解决办法
150
查看次数

无符号类型的大按位左移

是这样的

uint32_t foo = 1;

foo = foo << 33;
Run Code Online (Sandbox Code Playgroud)

C中的未定义行为?

c

4
推荐指数
1
解决办法
211
查看次数

Java可以抛出对异常的空引用吗?

考虑以下代码:

try {
    ....
} catch (MyException e){
    /*Can e be null here?*/
}
Run Code Online (Sandbox Code Playgroud)

鉴于null在Java中是一个类型化的空引用,是否有可能将上面的catch块输入enull

java exception-handling nullpointerexception

3
推荐指数
1
解决办法
287
查看次数

使用惰性求值实现三元类型 if

我正在为一个if函数实现一个生产规则:

qi::rule<Iterator, ascii::space_type, double(void)> f_if;
f_if = qi::ascii::string("if")
            >> qi::char_('(')
            >> (comparator >> ',' >> expression >> ',' >> expression) [qi::_val = boost::phoenix::bind(&Grammar<Iterator>::function_if, this, qi::_1, qi::_2, qi::_3)]
            >> qi::char_(')')
            ;
Run Code Online (Sandbox Code Playgroud)

表达式比较器声明为

qi::rule<Iterator, ascii::space_type, double(void)> expression;
qi::rule<Iterator, ascii::space_type, bool(void)> comparator;
Run Code Online (Sandbox Code Playgroud)

并且绑定函数具有原型

 double function_if(bool comparator, double left, double right);
Run Code Online (Sandbox Code Playgroud)

我可以做些什么,以便根据比较器的值仅评估一个表达式吗?

boost-spirit boost-spirit-qi

3
推荐指数
1
解决办法
327
查看次数

循环范围不起作用

我有一个Double[] foo,我需要转换数组中的每个元素:

我试过了

for (Double p : foo){
    p = p * m + o;
}
Run Code Online (Sandbox Code Playgroud)

在哪里mo是缩放因子.我也试过了

for (Double p : foo){
    p *= m;
    p += o;
}
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.我究竟做错了什么?我认为所有非原语都是Java中的引用.

java

3
推荐指数
2
解决办法
89
查看次数

为什么公共抽象最终类在语法上无效?

我有一个类foo只是一个static函数和变量的占位符.有点像namespaceC++中的.

因此,创建foo和继承的实例foo是没有意义的.

所以我很想写public abstract final class foo.但Java不喜欢这样.我可以使用纯虚函数在C++中完成它final,但为什么我不能在Java中使用它?我的设计出了什么问题?

更新: 我在这方面得到了大量的投票(撰写本文时为-4),所以我显然还不够清楚.这是具体的用例.这是在JNI和支持C库中使用的错误日志记录的严重级别代码的加载:

public abstract class Severity
{ 
    public static final int TRACE = 0x00000001;

    public static final int INFORMATION = 0x00000002;

    public static final int WARNING = 0x00000003;

    public static final int ERROR = 0x00000004;

    public static final int CRITICAL_ERROR = 0x00000005;

    public static final int OFF = 0x00000006;
}
Run Code Online (Sandbox Code Playgroud)

所以它几乎就像一个枚举器,但JNI和C库限制意味着它不是最理想的.使这个abstract final似乎完全合理的我,正如我已经说过了,相当于在C++允许.

java

3
推荐指数
1
解决办法
139
查看次数

Java中的null字符串化

考虑

public String toString()
{
    return foo + bar;
}
Run Code Online (Sandbox Code Playgroud)

哪个foobar都是该类的字段.

如果foobar是或者都是null,那么JLS是否保证(null)为每个字段返回字符串,还是保留了抛出NPE的权利?

java

3
推荐指数
1
解决办法
161
查看次数

正在读取指向已删除内存的未定义行为吗?

考虑

Foo* f = new Foo();
delete f;
Foo* g = f;
Run Code Online (Sandbox Code Playgroud)

由于我读到了一个我不拥有的内存指针,最终语句现在是不确定的吗?对我而言,它违反了一个过去的结束规则,所以它应该是.

注意

Foo* f;
Foo* g = f;
Run Code Online (Sandbox Code Playgroud)

未定义.

c++

3
推荐指数
1
解决办法
168
查看次数

从包含该成员的类的向量中提取特定成员的向量时如何避免显式循环

假设我有一堂课

struct Foo {double x; double y;}
Run Code Online (Sandbox Code Playgroud)

std::vector<Foo> xy;

我还有一个函数可以提取x成员:

std::vector<double> bar(const std::vector<Foo>& xy);
Run Code Online (Sandbox Code Playgroud)

它循环遍历 的每个元素xy

有没有办法使用 C++ 标准库来避免显式for循环?

c++ c++11

3
推荐指数
1
解决办法
155
查看次数