小编Bor*_*ris的帖子

为什么使用 constexpr 时超出范围变量的地址等于 0?

关于语义,我有些不明白constexprx当然,在堆栈上分配的地址无法在编译时计算出来。

constexpr auto foo()
{
    int x = 5;    
    return &x;
}

static_assert(foo() == 0);
Run Code Online (Sandbox Code Playgroud)

尽管如此,这段代码仍然可以编译(GCC 13.2 -std=c++20),并且 的地址x等于0,这可以在通过的声明中看到static_assert

请参阅https://godbolt.org/z/Pjrx3cb68

c++ gcc constexpr

14
推荐指数
2
解决办法
908
查看次数

分配相同大小的对象是否会改善GC或"新"性能?

假设我们必须创建许多字节数组类型的小对象.大小不一,但总是低于1024字节,比如说780,256,953 ....

如果我们总是只分配字节[1024],并且只使用所需的空间,它会不会随着时间的推移提高操作员的新效率或GC效率?

UPD:这是为了解析二进制协议消息而创建的短生命对象.

UPD:在两种情况下,对象的数量都是相同的,它只是改变的分配大小(随机与总是1024).

在C++中,由于碎片和C++的新性能,它很重要.但在C#....

c# garbage-collection new-operator

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

IO其他操作性能计数器说明

我已经从客户站点收到了性能计数器。我们注意到中的异常值\\COMPUTERNAME\Process(PROCESS_NAME)\**IO Other Operations/sec**

我想到的柜台最好的解释是:

进程发出既不是读取也不是写入操作的I / O操作(例如,控制功能)的平均速率。该计数器对进程生成的所有I / O活动进行计数,以包括文件,网络和设备I / O。此计数器等效于性能计数器Process \ IO Other Operations / sec。

Technet上,不会显示其描述。

谁知道此计数器(**IO Other Operations/sec**)实际计数?哪个系统调用可能导致此计数器增加以及如何对其进行监视。

我们正在使用C ++。

performance winapi perfmon disk

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

二进制遗留环境中的WCF

我们正在编写C#客户端,它应该连接到旧的旧服务器.为了在将来可扩展,我们希望利用WCF框架.

旧的遗留协议是专有协议和二进制协议.要集成到WCF,我们希望将通常的XML序列化器替换为我们专有的二进制格式marshaller.请注意,我们不希望将XML封装到其他传输协议中,而是将XML序列化器完全替换为无关.想想WCF与CORBA(但不是真正的CORBA)交谈,它不了解任何HTTP/SOAP/MTOM/...

有人能指出我们如何做到这一点的例子

.net wcf xml-serialization wcf-binding

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

Lua关闭/程序执行结束回调

我正在为 Lua 编写一个模块。关闭 lua 解释器时,即使用户忘记隐式调用关闭例程,它也必须运行清理例程。

该模块主要是用 C 编写的。

我应该使用 Lua C Api 中的哪个回调来检测程序执行结束?我唯一的想法是在代表我的模块的表上使用 __gc 元方法。有任何想法吗?

c lua luabind

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

gcc包括订单破损?

我遇到了一个奇怪的问题,linux c ++编译器包含来自本地目录而不是系统目录的文件.请参阅带有(-H)选项的预编译器输出.可以看出系统文件/usr/include/sched.h突然包含来自本地目录的time.h头而不是系统一.我假设如果包含文件在<>括号内,系统目录应首先查找,

来自sched.h的相关行是: -

#include <time.h>
Run Code Online (Sandbox Code Playgroud)

带(-H)选项的编译器输出: -

..... /usr/include/c++/4.6/bits/basic_string.h
...... /usr/include/c++/4.6/ext/atomicity.h
....... /usr/include/c++/4.6/i686-linux-gnu/./bits/gthr.h
........ /usr/include/c++/4.6/i686-linux-gnu/./bits/gthr-default.h
......... /usr/include/pthread.h
.......... /usr/include/sched.h
........... /usr/lib/gcc/i686-linux-gnu/4.6.1/include/stddef.h
........... /home/borisu/ivrworx-lnx/src/iw_core/../kentcsp/src/time.h <<<< WHY ???
Run Code Online (Sandbox Code Playgroud)

编译器目录搜索

$ gcc -xc++ -E -v -
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu …
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc include-path

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

__vftptr为NULL

我们从客户站点收到了故障转储.我看到其中一个结构是_stvptr是NUL.

它总是指向有问题的条件(记忆超限,删除对象两次......)或者是否存在此指针可以为空的情况.

c++ debugging windbg visual-c++

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

只有在达到虚拟限制时,内存不足?

据我所知,在win32中,每个程序都会收到4GB的虚拟内存.内存管理器负责将大块内存从物理内存卸载到磁盘.

是否暗示malloc或任何其他内存分配API仅在达到虚拟限制时才会抛出OUT_OF_MEMORY异常?我的意思是,即使程序远离其虚拟大小限制,malloc也可能失败,例如,物理内存都不能卸载到磁盘.假设磁盘具有无限容量,并且没有设置特定限制.

c c++ winapi memory-management

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

继续不运行C#

请考虑以下代码

class Program
{

    static void Continue()
    {
        Console.Out.WriteLine("Continue t1"); 
    }

    static async Task AsyncStart()
    {
        Console.Out.WriteLine("AsyncStart"); 
        return;
    }

    static void Main(string[] args)
    {

        Task t3 = AsyncStart().ContinueWith((ant) => { Continue(); });

        Console.Out.WriteLine("BEFORE"); 
        Task.WhenAny(new Task[] { t3 });
        Console.Out.WriteLine("AFTER");
     }
 }
Run Code Online (Sandbox Code Playgroud)

输出是

AsyncStart
BEFORE
AFTER
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)

继续没有运行!!!!

是的,我知道AsyncStart不包含任何等待(CS1998),但我仍然期望t3运行延续.我遗漏了一些非常基本的东西

c# asynchronous async-await

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

神秘的verifier.dll

在调试客户计算机上的崩溃时,我们注意到我们的应用程序在 verifier.dll 下运行。例如,每个线程堆栈都以verifier.dll 开头,并且每个系统函数都通过verifier.dll 存根进行拦截。

常识和谷歌搜索“verifier.dll”清楚表明该dll属于微软提供的Application Verifier工具。然而令人震惊的事实是,Application Verifier 甚至没有安装在客户的计算机上(在客户端计算机上和 c:\Program Files\Application Verifier 目录中均未找到 appverif.exe)。

还有什么可能导致程序在这种模式下运行。

debugging winapi

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

帮助找到C示例代码以读取lua命令行参数

我在C中寻找示例代码,它读取Lua命令行参数.有帮助吗?

c lua sample

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