小编San*_*996的帖子

垃圾记忆?

我刚刚阅读了一篇解释Wild指针的文章.对于垃圾内存,它指出当指向内存对象的指针丢失时,即它指示内存项继续退出,但指向它的指针丢失; 当内存未明确释放时会发生.我试图通过一个例子来理解这一点.这是我写的

#include <iostream>

using namespace std;
int q =12;
int point()
{
   int *p;
   p = &q;
   //delete p;
}
int main()
{
   point();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

因此,在上面的例子中,内存项(q)继续存在,但是指向它的指针丢失了.我可能误解了一切都错了,但如果我理解正确,那么这个例子是否解决了上面给出的"垃圾记忆"定义?如果是,那么我应该使用delete p,对吗?

c++ garbage-collection pointers

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

C中的冲突类型和转换

这可能是一个简单的问题,你要弄清楚我的getAverage函数遇到了一些问题,它返回一个浮点变量类型.我一直在我的函数所在的第114行收到"Conflicting Types"错误消息.我不确定我的方法或正在发生的事情的语法是否错误.任何帮助将不胜感激.

这是我的功能:

float getAverage(int nume, int deno)
{
    float average;
    average = (float)(nume/deno);
    return average;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我的功能低于我的主要功能.

c types casting

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

地图结构也支持排序?

我在我的程序中使用了一个地图结构.结构的关键是时间戳.值随机变化.我使用map的主要目的是确保所有值的表示以及它们的时间戳应该按降序排列,就像最新的事件应该是最重要的.但是,这种情况并没有发生.值不是所需(降序)顺序.

我已经宣布了地图结构

map<time_t, events> eventR;
map<time_t, events>::iterator iterator;

if the events are there {
then iterator=eventR.begin();
for(iterator = eventR.begin(); iterator!=eventR.end(); ++iterator)
{
//Display
}
}
Run Code Online (Sandbox Code Playgroud)

可能是我已经理解了地图结构错误,就像它不一定排序,但我想如果我使用时间戳,那么数据将根据最新事件显示.我在这里做错了吗?我是否必须使用不同的数据结构才能获得所需的结果?

谢谢

c++ data-structures

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

交换指针

可能重复:
使用指针交换对象

我知道如何使用指针进行交换,但是,如果我尝试这样的不同方法:

/* Pointers */
#include <stdio.h>
int main ()
{
  int a=4,b=6;
  swap(&a,&b);
  printf("A is %d, and B is %d\n",a,b);
  return 0;
}

int swap(int *a, int *b)
{
  int *temp;
  temp = a;
  a = b;
  b = temp;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

它不起作用.基本上交换函数正在改变地址,就像'a'现在有地址'b',反之亦然.如果我打印出交换函数中的值,它会给出交换值,但它不反映在main中功能.谁能告诉我为什么?

c c++ pointers

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

在 tcl 中传递和调用多个参数

我想制作一个可以接受N多个参数的 tcl 过程。我想从 bat 文件中调用它。这是我写的程序:

proc multi_argu {args} {
foreach {path rev_start rev_end} $args {
        puts "path-> $path"
        puts "rev_start-> $rev_start"
        puts "rev_end-> $rev_end"
    }
}
multi_argu $argv
Run Code Online (Sandbox Code Playgroud)

现在我从我的 bat 文件中调用它作为

tclsh multi_argu.tcl 1 2 3
Run Code Online (Sandbox Code Playgroud)

但输出是

path-> 1 2 3
rev_start->
rev_end->
Run Code Online (Sandbox Code Playgroud)

在我的 tcl 文件的末尾,我打电话给 multi_argu $argv我认为是罪魁祸首。但是,我不知道如何为多个参数执行此步骤。任何人都可以提供任何意见吗?

arguments tcl batch-file

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

python原始字符串转义字符

一个菜鸟问题.我正在阅读有关在python中使用正则表达式的文档.我的印象是,使用原始字符串会将'\'视为原样而不考虑将其作为转义序列.然而,在我阅读的例子中,

>>> phoneNumRegex = re.compile(r'(\(\d\d\d\)) (\d\d\d-\d\d\d\d)')
>>> mo = phoneNumRegex.search('My phone number is (415) 555-4242.')
>>> mo.group(1)
'(415)'
>>> mo.group(2)
'555-4242'
Run Code Online (Sandbox Code Playgroud)

显然,笔者逃脱"("与"\".我想知道怎么样.我觉得把一个"R"在带来像对待"\"没有区别.

python regex escaping

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

我的C程序的输出不是预期的

#include<stdio.h>
#include<conio.h>
int main()
{
   char c, p;
   p=getchar();
   int n=p+259;
   c=n;
   putchar(c);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我输入'a'字符,有人可以告诉我为什么这个程序的输出是'd'字符?

如果p ='a',则n = 97 + 259 = 356.如果我的n变量是356,如何为c分配值100('d'的ASCII代码)?

c character variable-assignment output

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

十六进制到十进制与char给出奇怪的结果?

我遇到了一个非常奇怪的问题.我想我在这里遗漏了一些非常基本的东西.当我这样做:

    char buffer[1] = {0xA0};
    int value=0;
    value = (int)buffer[0];
    printf("Array : %d\n",value); 
Run Code Online (Sandbox Code Playgroud)

我得到结果为-96,这不应该发生.它应该给我160,因为十六进制数0xA0表示十进制160.当我在缓冲区(如0x1F)中放入小值时,它可以正常工作.谁能告诉我,我在这里失踪了什么?

c c++

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