小编Jam*_*mes的帖子

检查是否可以释放指针

我到处寻找答案,但似乎找不到答案.(我对C++的经验相当有限)

在我的库中,我释放了一个字符串.(太棒了,对吧?)

这就是出现问题的地方.我有一个包含char*的结构,可以在堆上分配,也可以不分配.虽然它是一个有效的指针,但它无法释放.

IE

char* s1 = "A String";
char* s2 = (char*)memcpy(malloc(9), s1, 9);

free(s2);
free(s1);
Run Code Online (Sandbox Code Playgroud)

将导致"free(s1)"错误; (因为它应该)因为s1实际上不需要被释放,(它不在堆上)我如何以"可接受"的方式处理它?(在类似的主题上,"让它崩溃"的答案似乎不合理IMO)

因为结构不仅仅是由库创建的,所以不可能保证使用memcpy之类的东西正确复制字符串.

看到这是一个Windows库,我不需要担心使用ISO C的东西或标准的C函数.

c++ memory free pointers

5
推荐指数
2
解决办法
905
查看次数

不在Java中使用if语句

这是一个非常奇怪且非常具体的问题.

最终我正在尝试编写一个程序转换,它接受java源代码,并将其转换为不使用它(除其他外)

  • 数组
  • 循环
  • 用户定义的方法
  • 如果声明

这是我为自己设定的挑战,在我的老师告诉我没有使用这些东西后编写程序是不可能的.

我已经解决了大部分问题,包括函数内联和数组替换,但是我无法弄清楚如何管理if语句.

在C++中,我使用标签和gotos,也许?:,但Java不支持GOTO语句.

我的问题是:给出一段代码,

if(CONDITION)
{
   //More code in here
}
Run Code Online (Sandbox Code Playgroud)

如何对其进行转换以使其在功能上相同,但不使用if关键字.请注意,循环结构也是不可能的.

鉴于此,创建else以及if语句会很容易.但是我也不确定如何使用它创建循环,因为没有GOTO语句和方法是不可能的.

编辑:请注意,也不允许切换,也不允许递归(由于无法定义用户方法,并且递归的主函数不适用于每个程序)而排除.?:运算符不适用于所有情况.AFAIK你不能用?:调用void函数,因为它想要将一个值作为其操作的一部分.

这些条件来自IB计算机科学SL需要课程,我正在考虑HL和作为一个班级,我们嘲笑SL的"掌握"因素,其中包括'if'语句(如果其中3/15是'用户定义'具有参数和返回类型的方法)挑战实际上是在SL中进行精通测试,同时仍然生成正常运行的程序.

答案:(由bdares提供)

String result = (CONDITION)?"0":"A";
try{
    Integer.parseInt(result);
    //Condition is true
} catch(NumberFormatException e){
    //Condition is false
}
Run Code Online (Sandbox Code Playgroud)

java esoteric-languages

5
推荐指数
1
解决办法
2252
查看次数

如何使MS Visual C++使用LP64而不是LLP64

我想知道是否可以使用VC++ LP64而不是LLP64,我知道我可以使用其他编译器,如GCC或Intel C++,但我想出于各种原因使用VC++.

不需要与Microsoft标头等兼容,我已经使用LIBC作为我的运行时库.

64-bit abi visual-studio-2010 visual-c++

5
推荐指数
1
解决办法
1062
查看次数

恢复磁盘上支持哪个Windows子系统

在恢复模式下运行标准Windows 7安装磁盘时,如果打开命令行并运行自定义构建的应用程序,则会收到错误"子系统不受支持".我尝试使用/ SUBSYSTEM:CONSOLE,WINDOWS和NATIVE进行链接,这些都不起作用.

我对分区表有点困难(并且可能发现了一个错误,或者至少是来自Windows中包含的分区管理器的"愚蠢"行为),因此编写了一个实用程序来修复它.我的程序使用'Windows.h'进行导入CreateFile,但是如果需要,我只能使用标准C++(甚至是标准C),没有特定于Windows的标题.

要使应用程序运行,我需要做什么?

c++ windows subsystem

5
推荐指数
1
解决办法
381
查看次数