相关疑难解决方法(0)

随机数和地板与圆形功能

为什么我使用随机数生成器并且范围为0 - 9我没有得到与将其与floor功能相结合的相同均匀分布?

javascript

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

动态分配内存

让我们考虑以下两个代码

第一:

for (int i=0;i<10000000;i++)
{
    char* tab = new char[500];
    delete[] tab;
}
Run Code Online (Sandbox Code Playgroud)

第二:

for (int i=0;i<10000000;i++)
{
    char tab[500];
}
Run Code Online (Sandbox Code Playgroud)

峰值内存使用率几乎相同,但第二个代码运行速度比第一个快20倍.

问题
是因为第一个代码数组存储在堆上,而第二个数组存储在堆栈中?

c++ memory-management dynamic

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

什么是执行框架?

在C#中,什么是执行帧(也与此有关,我听说过激活帧).IIRC它是一个方法参数去的槽,但不记得所有的细节.

谢谢

c# stack callstack

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

在函数中返回char*

我有功能:

char *zap(char *ar) {

    char pie[100] = "INSERT INTO test (nazwa, liczba) VALUES ('nowy wpis', '";
    char dru[] = "' )";
    strcat(pie, ar);
    strcat(pie, dru);
    return pie;
}
Run Code Online (Sandbox Code Playgroud)

主要有:

printf("%s", zap( argv[1] )  );
Run Code Online (Sandbox Code Playgroud)

编译时我收到警告:

test.c: In function ‘zap’:
test.c:17: warning: function returns address of local variable
Run Code Online (Sandbox Code Playgroud)

我该如何归还char*?

c function char

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

在datagrid中获取行

我试着像这样排:

DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(i);
TextBlock cellContent = dataGrid.Columns[0].GetCellContent(row) as TextBlock;
Run Code Online (Sandbox Code Playgroud)

但我只有null.还有其他解决方案吗?我究竟做错了什么?

我想从我的细胞中获取数据.我的单元格是复选框.

c# wpf datagrid row

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

如何在Windows平台上获取堆大小

正如问题标题所示,我想知道是否有办法获得当前进程的堆大小.

c++ windows

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

调用clock()时出现分段错误

我试图使用以下程序以编程方式了解缓存的影响.我正在使用代码获得段错误.我使用GDB(编译-g -O0),发现它是分段错误

start = clock() (first occourance)
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?代码看起来很好.有人可以指出错误吗?

#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>

#define MAX_SIZE (16*1024*1024)
int main()
{
    clock_t start, end;
    double cpu_time;
    int i = 0;
    int arr[MAX_SIZE];

    /* CPU clock ticks count start */
    start = clock();

    /* Loop 1 */
    for (i = 0; i < MAX_SIZE; i++) 
        arr[i] *= 3;

    /* CPU clock ticks count stop */
    end = clock();

    cpu_time = ((double) (end - start)) / CLOCKS_PER_SEC;

    printf("CPU time …
Run Code Online (Sandbox Code Playgroud)

c linux performance

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

测试malloc何时返回NULL

我试图strdup在C中复制这个功能.这是学校练习的一部分.我想单元测试,其中包括情况下malloc返回NULL,并设置errnoENOMEM.

我在OSX 10.8上.

我已经尝试限制stacksize,然后datasize,在堆上实现malloc分配:

limit stacksize 0
limit datasize 0
Run Code Online (Sandbox Code Playgroud)

确认限制应该有效:

my-host% limit
cputime         unlimited
filesize        unlimited
datasize        0kB
stacksize       0kB
coredumpsize    0kB
addressspace    unlimited
memorylocked    unlimited
maxproc         709
descriptors     256
Run Code Online (Sandbox Code Playgroud)

但是,即使堆栈大小限制为0kB,我也可以正常运行程序.所以我认为我的主机可能对最小堆栈大小有限制.

我怎么能测试malloc返回的情况NULL呢?

c macos unit-testing

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

为什么此代码会给运行时分段带来错误?

为什么这段代码会给出分段错误?我正在使用code :: blocks.

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
     int a[555555];
}
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow

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

C++:编译器如何知道为每个堆栈帧分配多少内存?

这里的第一个答案中,提到了以下关于C++中的堆栈内存:

调用函数时,会在堆栈顶部为区域变量和一些簿记数据保留一个块.

这在顶层是完全有意义的,并且让我对在这个问题的上下文中分配这个内存的智能编译器是多么好奇:由于大括号本身不是C中的堆栈框架(我认为这有用)对于C++也是如此),我想检查编译器是否基于单个函数内的变量范围优化保留内存.

在下面我假设在函数调用之前堆栈看起来像这样:

--------
|main()|
-------- <- stack pointer: space above it is used for current scope
|      |
|      |
|      |
|      |
--------
Run Code Online (Sandbox Code Playgroud)

然后在调用函数后执行以下操作f():

--------
|main()|
-------- <- old stack pointer (osp)
|  f() |
-------- <- stack pointer, variables will now be placed between here and osp upon reaching their declarations
|      |
|      |
|      |
|      |
--------
Run Code Online (Sandbox Code Playgroud)

例如,给定此功能

void f() {
  int x = 0;
  int …
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-management

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