任何人都可以帮助我,为什么我在尝试释放分配的内存时收到错误消息:检测到堆损坏.CTR检测到应用程序在堆缓冲区结束后写入内存.
char *ff (char *s){
char *s1 = new char [strlen(s)];
strcpy(s1, s);
return s1;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *s = new char [5];
strcpy(s, "hello");
char *s2 = ff(s);
delete []s; // This works normal
delete []s2; // But I get an error on that line
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有两个班级:
class Outer {
Inner inner = new Inner("value");
}
class Inner {
private final String value;
Inner(String value) {
this.value = value;
}
}
public Optional<Outer> getOptionalValue() {
return Optional.of(new Outer());
}
Run Code Online (Sandbox Code Playgroud)
我的测试:
public void testCLass() {
Assertions.assertThat(getOptionalValue())
.isPresent()
.map(v -> v.inner.value)
.isEqualTo("value");
}
Run Code Online (Sandbox Code Playgroud)
我希望它通过,因为isPresent
unwraps 可选,map
转换Outer
为value
最后一种方法,我只是比较字符串。
但它在最后一行失败并显示以下消息:
Expecting:
<Optional[value]>
to be equal to:
<"value">
but was not.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么不展开可选
我有这样的代码:
t = a:(b-a)/10:b;
y = myFunction(t);
Run Code Online (Sandbox Code Playgroud)
据我猜,这段代码通过应用to的每个值创建一个数组t
和另一个数组.y
t
myFunction
然而,如果我手动传递数组的第一个元素t
,以myFunction
喜欢这个
y = myFunction(t);
Run Code Online (Sandbox Code Playgroud)
我不会得到y
不同数字的第一个元素.为什么?
PS
myFunction
看起来像这样:
function res = myFunction(x)
res = tanh(5*x.^2 + 3*x - 2) + exp((x.^3 + 6*x.^2 + 12*x + 8)/(2*x.^2 + 8*x + 7))-2.0;
end
Run Code Online (Sandbox Code Playgroud) 谁能告诉我,SAD和SDD有什么区别?我在谈论绝对差异的总和和平方差异的总和.
只是在SSD中你得到方块的差异度量?我可以只使用度量的绝对值,而不是提高到第二个幂.
什么是广场有用?
我需要编写一个对大小为[0..N-1]的数组进行排序的算法,该算法填充了范围[0..N-1]的值.数组中的值不能重复.排序应该在线性时间内工作,我只允许使用一些额外的变量.
请写我写的代码.据我猜,最糟糕的时间是2*N. 还是一个线性时间吗?是否有可能使速度更快?
public int sort(){
int i = 0;
while (i < n){
if (a[i] != i)
switchElements(a[i], a[a[i]]);
else
i++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
额外的1 我真的需要对数组进行排序,因为排序只是任务的一部分.完整的任务是找到数组中的重复值,线性时间,没有其他变量.
今天我有一个inverview,并被要求编写两个字符串连接的功能.但是在我结束之后,我听说,通常代码没问题,但我在那里做了一点错误.在家检查,但一切正常.有什么问题?
char * strconcat (char *S1, char *S2){
char *S3 = new char [strlen(S1) + strlen(S2) +1];
strcpy(S3, S1);
strcat(S3, S2);
return S3;
}
Run Code Online (Sandbox Code Playgroud) 我运行以下代码片段
System.out.println(T1() ? F1() : T2() == T3() ? F2() : T4());
public static boolean T1() { System.out.println("true1"); return true; }
public static boolean T2() { System.out.println("true2"); return true; }
public static boolean T3() { System.out.println("true3"); return true; }
public static boolean T4() { System.out.println("true4"); return true; }
public static boolean F1() { System.out.println("false1"); return false; }
public static boolean F2() { System.out.println("false2"); return false; }
Run Code Online (Sandbox Code Playgroud)
我得到了输出
true1
false1
false
Run Code Online (Sandbox Code Playgroud)
在评估等式运算符之前,已对第一个三元运算符进行了求值,但根据oracle文档,等式运算符的优先级高于三元运算符,因此必须在三元运算符之前对等式运算符求值.
这样的代码行为的原因是什么?
我正在开发一个Android应用程序,并且当同一用户将我的应用程序安装在另一部手机上时,我想恢复用户设置。
我不想使用Dropbox或Google驱动器,因为并非所有用户都在这些云中拥有帐户。我想使用所有Android用户都拥有的东西。有一些云链接到Google帐户吗?但是我找不到。
应该有很常见的解决方案,但我还没有找到任何有关它的信息。
我试图理解这两种方法之间的区别,但它们对我来说似乎很相似。甚至 javadoc 也几乎相同
我有一个函数来检查数组中是否有重复数据;这看起来像下图所示。任务是使用该函数查找矩阵中没有重复数据的列。问题是如何将矩阵的列传递给该函数。
PS 我正在使用 Pascal/Delphi
type
myArray = array [1..10] of integer;
function noRepeat(A: myArray; n: integer): Boolean;
var
i: integer;
begin
Result := true;
for i:=1 to n do
for j := i + 1 to n do
if (A[i] = A[j]) then
Result := true;
end;
Run Code Online (Sandbox Code Playgroud) 我正在使用如下代码在验证模式下运行旋转。名为“从不”的函数出现问题。在执行时,它给了我一个错误,函数 inc()、dec() 和 reset() 从未完成。但是如果我添加一个循环,效果很好。根据文档,“从不”检查每一步的变量。那么,为什么它在没有循环的情况下不起作用?
int x=0
proctype Inc(){
do
::true ->
if
::x<10->x=x+1
fi
od
}
proctype Dec(){
do
::true ->
if
::x>0->x=x-1
fi
od
}
proctype Reset(){
do
::true ->
if
::x==10->x=0
fi
od
}
never { // if I need this to work, i have to add
To_Init: // this line
if
:: (x<0) || (10<x) -> goto accept
:: else -> goto To_Init // and that line
fi;
accept:
}
init{
run Inc();
run Dec();
run …
Run Code Online (Sandbox Code Playgroud) 我有一个基类A,有一个方法"说"从A的构造函数调用.所有可遗漏的类使用方法"说"就像它.但其中一个类需要重新定义这种方法.这怎么可能?
当然,我可以将基本方法"说"视为抽象,但是这样,我必须在所有可遗漏的类中复制相同的方法"说".
如果我只是重新定义方法而不将基数表示为抽象,那么它就不会被调用.
public abstract class A(){
public A(){
say(); // <- wanna call this method from heritable class, if its redefined.
}
protected void say(){};
}
public class B extends A(){
public B(){
super();
}
private void say(){};
}
Run Code Online (Sandbox Code Playgroud)
public abstract class A(){
public A(){
// constructor methods
}
protected void say(){};
protected void executeSay(){
say();
}
}
public class B extends A(){
public B(){
super();
executeSay();
}
@Override
protected void say(){};
}
Run Code Online (Sandbox Code Playgroud) 我正在用Java编写游戏,并且有一种方法要求用户从Console中输入值:
public String getUserInput() {
try (Scanner scan = new Scanner(System.in)) {
String s = scan.nextLine();
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我想多次调用此方法,具体取决于外部参数,但我事先不知道,是否会再次调用。
但是当我在第二次调用中调用这样的方法时,我得到了
Exception in thread "main" java.util.NoSuchElementException: No line found
Run Code Online (Sandbox Code Playgroud)
问题: