小编cal*_*kon的帖子

C++ vs Java:无限循环创建对象只会导致C++崩溃

这是我的一本书中的一个问题(没有附上答案),我已经考虑了几天了.答案很简单,C++代码最终会崩溃,因为它在每次迭代后都会创建一个垃圾内存单元?

考虑以下Java和C++代码片段,这是基于GUI的应用程序的两个版本的一部分,它收集用户首选项并使用它们来组装命令及其参数.方法/函数getUserCommandSpecification()返回表示命令代码及其参数的字符串.返回的字符串用于构建所需的命令,然后执行该命令.

假设如下:

(i)在Command对象的while循环中创建(在Java情况下由cmd引用或在C++情况下由cmd指向),不再引用或使用对生成的对象的引用/指针cmd.

(ii)应用程序还定义了一个类Command及其方法/函数execute().

一个.下面详述的两个代码版本中的哪一个最终会崩溃.
湾 解释为什么程序版本崩溃而另一个版本没有崩溃.

Java代码

...
while (true) {
   String commandSpecification = getUserCommandSpecification();
   Command cmd = new Command(commandSpecification);
   cmd.execute();
}
...
Run Code Online (Sandbox Code Playgroud)

C++代码

...
while (true) {
   string commandSpecification = getUserCommandSpecification();
   Command* cmd = new Command(commandSpecification);
   cmd -> execute();
}
...
Run Code Online (Sandbox Code Playgroud)

c++ java pointers memory-management

17
推荐指数
5
解决办法
1736
查看次数

为什么我的进程并不同时运行?

我的问题是:

1.)如何让父进程永远死?我知道这没有完成,因为父亲是第一个运行的pid,但我不知道如何改变它.

2.)如何让我的子进程像他一样同时执行?我甚至把这个数字提高到很高,看它是不是巧合,但似乎不是.

编辑:解决方案

1.)在内部默认
2中添加了两次wait(NULL).)正在发生.用睡眠(1)来证明它.

我的代码如下

#include <stdio.h>
int main() {
    int pid, i;
    pid = fork();
    switch(pid) {
        case -1:
            // error
            printf("Fork error");
            break;
        case 0:
            // child process
            printf("First child is born, my pid is %d\n", getpid());
            for(i=1; i<10; i++)
                printf("First child executes iteration %d\n", i);
            printf("First child dies quietly.\n");
            break;
        default:
            // parent process
            printf("Parent process is born, my pid is %d\n", getpid());
            pid = fork();
            switch(pid) {
                case -1:
                    // error
                    printf("Fork error");
                    break; …
Run Code Online (Sandbox Code Playgroud)

c fork pid process

6
推荐指数
1
解决办法
2665
查看次数

C++ OpenGL线框立方体渲染空白

我只想绘制一堆构成"立方体"的线条.我不能为我的生活弄清楚为什么这会产生黑屏.调试器不会在任何时候中断.

我确定这是我的指针的一个问题,因为我在普通的c ++和OpenGL中只对他们不太好,它变得更糟.

const char* vertexSource = 
    "#version 150\n"
    "in vec3 position;"
    "void main() {"
    "   gl_Position = vec4(position, 1.0);"
    "}";

const char* fragmentSource = 
    "#version 150\n"
    "out vec4 outColor;"
    "void main() {"
    "   outColor = vec4(1.0, 1.0, 1.0, 1.0);"
    "}";

int main() {

    initializeGLFW();

    // Initialize GLEW
    glewExperimental = GL_TRUE;
    glewInit();

    // Create Vertex Array Object
    GLuint vao;
    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);

    // Create a Vertex Buffer Object and copy the vertex data to it
    GLuint vbo;
    glGenBuffers( 1, &vbo …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glew pointers glfw

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

Java GUI - 嵌套面板

我正在尝试创建一个表单,该表单接受用户输入的名字和姓氏,并打印一个结合这两者的欢迎消息.我想将输入内容组合到一个网格面板中,然后将"Go"按钮和在另一个面板中显示消息的文本字段分组,并使用BorderLayout在一个框架内将它们嵌套在一起.

通用布局:

(在3x2网格中)

First Name: __________________________  
Last Name:  __________________________  
Age:        _______________
Run Code Online (Sandbox Code Playgroud)

"GO BUTTON""欢迎马克萨默斯"

教授想把它全部放在一个.java文件中,这是我的问题.我通常将这些东西分开然后扩展类并没有问题.我要做的是将输入和输出面板保存在我的构造函数下,然后在我的main下创建

JFrame frame = new JFrame();
Run Code Online (Sandbox Code Playgroud)

然后

add(new CalebBreckonHW3(320,120));
Run Code Online (Sandbox Code Playgroud)

从而在我的700x700 JFrame"框架"中放置一个320x120面板.我收到一条错误消息,但我无法从静态上下文中引用非静态方法add(java.awt.Component).我不能将我的主要设置为非静态或我会收到错误.

我现在正在通过一个可以指向正确的方向向我添加代码的过程吗?

import java.awt.*;
import javax.swing.*;

public class CalebBreckonHW3 extends JFrame {
    private JButton jbtGreet = new JButton("Greet Me");
    private JLabel firstOprLbl = new JLabel("First name");
    private JLabel lastOprLbl = new JLabel("Last name");
    private JLabel ageOprLbl = new JLabel("Age");
    private JTextField jtfFirst = new JTextField(10);
    private JTextField jtfLast = new JTextField(15);
    private JTextField jtfAge = new JTextField(3); …
Run Code Online (Sandbox Code Playgroud)

java swing

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

带有可见边的C++ OpenGL空立方体

我正在尝试创建一个立方体.我希望立方体本身是清晰的(黑色,因为背景是黑色的),但我希望12条线条变得薄而白.唯一的方法是创建线条并将它们放在边缘上吗?或者有不同的方法来接近它吗?

原因是我必须创造出在盒子里面弹跳的球.

也许我应该做glBegin(GL_LINES),甚至不担心表面会碰撞,因为我可以用数学方法创建它?

我只是这样创造我的方面:

glBegin(GL_POLYGON);
glVertex3f( -0.5, -0.5,  0.5 );
glVertex3f( -0.5,  0.5,  0.5 );
glVertex3f( -0.5,  0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();
Run Code Online (Sandbox Code Playgroud)

c++ opengl

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

使用UNION为SELECT语句添加参数会更改记录号

当我在a的SELECT子句中添加一个新参数时UNION,我会得到更多记录......这怎么可能?是不是UNION只是将它们混合在一起?例:

编辑:他们绝对不同.该code列是"IN"或"OUT",这就是我用来分隔两者的原因.

EDIT2:UNION ALL给了我80条记录,就像它应该的那样,但它很奇怪,因为我的两个SELECT语句绝对不同.

最终编辑:最终问题是我的一个SELECT语句中的记录不是DISTINCT,而是在两个SELECT语句之间.谢谢大家.

-- Yields 76 records
SELECT
       f.date
     , f.code
     , f.cost
  FROM a.fact f
  WHERE f.code = 'IN'
UNION
SELECT
       f2.date
     , f2.code
     , f2.cost
  FROM a.fact2 f2
  WHERE f2.code = 'OUT'
;

-- Yields 80 records
SELECT
       f.key
     , f.date
     , f.code
     , f.cost
  FROM a.fact f
  WHERE f.code = 'IN'
UNION
SELECT
       f2.key
     , f2.date
     , f2.code
     , f2.cost
  FROM a.fact2 f2
  WHERE f2.code = 'OUT' …
Run Code Online (Sandbox Code Playgroud)

sql oracle

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

Perl,删除前三个字符后的所有内容

我向你保证,我现在已经搜索了大约两个小时.我发现了一些应该有效的,但他们没有.

我有一行由不同数量的数字组成,用空格分隔.我想在第三个数字后删除所有内容.

我应该说我写的所有内容都假设\S\s\S\s\S与前三个数字相符.空间介于1和2之间,以及2和3之间.

我预计以下工作:

s/^.*?[\S\s\S\s\S].{5}//s;

但它与我想要的完全相反.

我想2 3 0 4 5 6 7 1 0 1 2成为2 3 0

我真的更愿意保持替代.我已经尝试了一个人提到的后视,我没有运气.在我尝试这些命令之前,我应该将前3个数字保存为字符串吗?

编辑:

我应该澄清一下,这些数字也可以是1.57或1.00E01的形式.当我试图将其用于基线工作时,我有整数.

regex perl line substitution

2
推荐指数
1
解决办法
2594
查看次数

OpenGL GL_POLYGON无法正确打印

我正在绘制一个基本多边形,其中5个边看起来几乎像C形.

(50,60) _____(70,60)
       |    /
       |   /
       |  /(60,40)
       |  \
       |   \
(50,20)|____\(70,20)
Run Code Online (Sandbox Code Playgroud)

非常直截了当.

我用的时候

wcPt2D verts[5] = {{50,20}, {70,20}, {**60**,40}, {70,60}, {50,60}};
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我明白了 预期.但是当我改变那个中心部分时

wcPt2D verts[5] = {{50,20}, {70,20}, {**51**,40}, {70,60}, {50,60}};
Run Code Online (Sandbox Code Playgroud)

我明白了

在此输入图像描述

这显然不是左侧的1个单位/图像1左侧的9个单位,并且它明显地将y值降低了大约10个单位.为什么是这样?

void polygon (wcPt2D *verts)
{
GLint k;

glBegin(GL_POLYGON);
    for (k = 0; k < 5; k++)
    {
        glVertex2f(verts [k].x,verts [k].y);
    }
glEnd();
}
Run Code Online (Sandbox Code Playgroud)

c++ opengl visual-c++

2
推荐指数
1
解决办法
595
查看次数

无法在GLEW应用程序中将OpenGL缓冲区打印到控制台

我正在使用这里找到的教程.我正在使用GLFW.我的窗口加载正常,但在打电话时

GLuint vertexBuffer;
glGenBuffers( 1, &vertexBuffer );
printf( "%u\n", vertexBuffer );
Run Code Online (Sandbox Code Playgroud)

它不是写入控制台,如果我关闭openGL窗口它会中断(不是我关闭控制台).我猜这指针有问题吗?但对我来说似乎是正确的,而且正如他在教程中所拥有的那样.

这是我的整个,非常小的.cpp(VS2012):

#define GLEW_STATIC

#include <GL/glew.h>
#include <GL/glfw.h>
#include <stdio.h>
#include <stdlib.h>

#pragma comment( lib, "glfw.lib")
#pragma comment( lib, "opengl32.lib")
#pragma comment( lib, "glew32s.lib")

int main() {

    glfwInit();
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 2 );
    glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );

    glfwOpenWindowHint( GLFW_WINDOW_NO_RESIZE, GL_TRUE );
    glfwOpenWindow( 800, 600, 0, 0, 0, 0, 0, 0, GLFW_WINDOW );
    glfwSetWindowTitle( "OpenGL" );

    printf("This works");
    while( glfwGetWindowParam( GLFW_OPENED ) ) {
        glfwSwapBuffers(); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glew glfw

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

Oracle触发器与null冲突

首先,这是一个作业,所以你想要建议的大多数非常酷的预先编写的函数,我将不被允许使用.

我有几张桌子都有字段

creation_date
created_by
last_update_date
last_updated_by
Run Code Online (Sandbox Code Playgroud)

我需要编写一个触发器来填充这些内容以进行创建或更新.问题是,这些表的空值对我来说是个问题.例:

CREATE TABLE parts
(
pno                NUMBER,
pname              VARCHAR2(50) NOT NULL,
qoh                NUMBER       NOT NULL,
price              NUMBER(5,2),
reorder_level      NUMBER(2),
creation_date      DATE         NOT NULL,
created_by         VARCHAR2(10) NOT NULL,
last_update_date   DATE         NOT NULL,
last_updated_by    VARCHAR2(10) NOT NULL,
CONSTRAINT parts_PK PRIMARY KEY (pno))
Run Code Online (Sandbox Code Playgroud)

这些NOT NULL是给我的,我不允许改变它们.所以我很难将其概念化.

  • 如果我的触发器在创建字段之前添加了这些值,我就无法将这些字段设置为INSERT INTO,因为它们不是NULL.
  • 如果我的触发器在创建字段后添加这些值,则会出现编译错误ORA-00903和00922.无效的表名和无效选项.

我在想我的触发器看起来像

CREATE OR REPLACE TRIGGER pcreate
  BEFORE UPDATE on parts
  FOR EACH ROW
BEGIN
  UPDATE
    SET creation_date = SYSDATE;
    SET created_by = USER;
    SET last_update_date = SYSDATE;
    SET last_updated_by …
Run Code Online (Sandbox Code Playgroud)

sql oracle null triggers sqlplus

0
推荐指数
1
解决办法
2295
查看次数

Javascript没有使用id的某些元素

我试图让3行做一些事情:第1行旋转45度,有些翻译第1行不透明度0第1行旋转-45deg和一些翻译

JS小提琴

<a href = "#"><div id = "menu" onclick="menu()">
              <div id = "lineOne">1</div>
              <div id = "lineTwo">1</div>
              <div id = "lineThree">1</div>
              </div>
</a>

function menu()
{
    //Show Differnet Button
    document.getElementById('lineOne').style.WebkitTransform = "rotate(45deg) translate3d(10px,10px,0)";
    document.getElementById('lineTwo').style.opacity = ".3";
    document.getElementById('lineThree').style.WebkitTransform = "rotate(-45deg) translate3d(10,-10px,0)";
}

#lineOne, #lineTwo, #lineThree, #line4, #line5, #line6
{
    margin-top: 6px;
    margin-left: 30px;
    position: relative;
    top: 0px;
    right: 0px;
    width: 50%;
    height: 7px !important;
    background: black;
    color: rgba(1,1,1,0) !important;
}
Run Code Online (Sandbox Code Playgroud)

我在JS Fiddle上的代码是上面的,我得到的唯一结果是不透明度,第一个旋转和翻译.没有其他的.我完全忽略了其余的事情.我能做什么?

html javascript css html5 css3

0
推荐指数
1
解决办法
95
查看次数

标签 统计

c++ ×5

opengl ×4

glew ×2

glfw ×2

java ×2

oracle ×2

pointers ×2

sql ×2

c ×1

css ×1

css3 ×1

fork ×1

html ×1

html5 ×1

javascript ×1

line ×1

memory-management ×1

null ×1

perl ×1

pid ×1

process ×1

regex ×1

sqlplus ×1

substitution ×1

swing ×1

triggers ×1

visual-c++ ×1