最近我必须编译 Qt,并且说明明确提到我的应用程序应该使用与我编译 Qt 相同的编译器进行编译。现在我不明白其原因,想知道这是 Qt 特有的还是通用的 C++ 的东西?
我有班苹果
class apples
{
private:
double x;
double y;
double z;
public:
//some methods
};
Run Code Online (Sandbox Code Playgroud)
我想将指针存储到矢量中的苹果对象.我这样做是为了在任何文件中创建任何对象并使用任何文件中的任何对象.我使用以下代码来确定我可以存储在该向量中的指针的最大数量
int _tmain(int argc, _TCHAR* argv[])
{
vector<apples *> myvector;
cout<<"max :"<<myvector.max_size();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我:
1073741823
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,我真的可以在该向量中存储1073741823没有指针,或者这是向量的内存限制(即1073741823字节)吗?
所以如果有2个向量
vector<int> A
&
vector<double> B
Run Code Online (Sandbox Code Playgroud)
A有1073741823元素和B还有1073741823元素?我要求澄清一点, 矢量可以存储的元素的最大数量不依赖于存储的实体类型(int或double)? (这与向量的当前容量无关!)另外,指向apple对象的指针的大小(不要求苹果对象的大小!)?谢谢.
首先,我想告诉我,我来自非计算机科学背景,我一直在学习C++语言.我无法理解什么是缓存?它在不同的背景下有不同的含义.我想知道在C++程序中什么叫做缓存?例如,如果我int在文件中有一些数据.如果我读它并存储在int数组中,那么这是否意味着我已经"缓存"了数据?对我而言,这似乎是使用数据的常识,因为从文件读取总是比从RAM读取更糟糕.但由于这篇文章,我有点困惑.
在CPU中,可以有多个缓存,以加速循环中的指令或存储经常访问的数据.这些缓存很小但很快.从高速缓冲存储器读取数据比从RAM读取数据要快得多.
它说从缓存中读取数据比从RAM中读取数据要快得多.我以为RAM和缓存是一样的.有人可以清除我的困惑吗?
编辑:我正在更新问题,因为以前它太宽泛了.我的困惑始于这个答案.他说
RowData和m_data特定于我的实现,但它们仅用于缓存有关文件中某行的信息
在这种情况下缓存意味着什么?
我目前正在学习OpencL,并且发现它有点难以理解它是如何工作的.我正在使用MinGW编译器和ATI APP SDK.当我运行目标时,我收到错误消息

我没有将任何OpenCL.dll放在与我的应用程序相同的文件夹中.现在在Windows上搜索一下我可以找到这个dll
C:/Windows/SysWOW64
C:/Windows/System32/DriverStore/...
C:/Windows/System32
C:/Program Files(x86)/AMD APP SDK /...
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我应该如何部署我的应用程序?我应该在我的应用程序中分发OpenCL.dll吗?
从这里收到的答案回答:图形仅使用标准C++?
似乎C++本身没有GUI功能.那么像Ct这样在C++中支持GUI的其他框架如何做呢?他们是否在内部使用其他语言或是否有其他一些标准的GUI /协议?
我只关心C++语言框架.
谢谢.
假设对于在其生命周期内永远不会接收互联网连接的应用程序,您如何防止软件的盗版?安装过程中不能有单一的产品密钥要求,因为一旦合法安装,任何人都可以复制安装并重新分发.因此,每次应用程序运行时,都应检查某些内容并在检查失败时崩溃.现在它可能检查什么?最初我认为保留一个加密的二进制文件可以完成这项工作,但正如这里所回答的,这似乎是一个可以忽略的预防.任何黑客都可以修改可执行文件,以便在检查失败时不会崩溃,它应该继续运行.因此,无论检查有多困难,破解的应用程序将始终运行.现在我看不出任何可能解决这个问题的方法.
PS:我是一个独立的开发人员,他正在以极低的费用开发生产力软件.看到这个问题,我相信我必须放手.叹....
编辑:我要感谢本次讨论中的所有贡献者让我了解严峻的现实......我现在理解的是,您是以目标可执行文件的形式间接提交应用程序的源代码.任何使用调试器的人都可以修改它的源代码,因此通过应用程序的源代码防止盗版的任何方法都是无用的.解决这个问题的唯一可能办法是通过提供服务(除软件之外)让您的合法客户满意,并使您的价格低于他们的预期.我想过去3天解决这个问题现在看起来一切都值得,但在这个过程中我还是学到了很多东西,否则我就不会这样了...我哈哈
我正在读一本关于C的书.它说C99添加了一个数据类型_Bool.它基本上是一个int但只存储0或1.现在我不明白为什么需要这样的数据类型.我们已经有bool隐式转换为int,反之亦然.那么请有人告诉我这种数据类型有用的情况.
PS:C++似乎不支持这里看到的数据类型.
#include <iostream>
using namespace std;
int main() {
// your code goes here
_Bool b = false;
if(b == 0)
printf("FALSE");
else
printf("TRUE");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码,该代码从大小为double的数组中创建缓冲区内存对象:
coef_mem = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, (sizeof(double) * size), arr, &err);
Run Code Online (Sandbox Code Playgroud)
考虑将它作为内核的arg传递.根据运行内核的设备,有两种可能性:
以下是我对两种可能性的问题:
在我的软件中,我在运行时使用用户的输入值并执行一些数学运算.考虑到以下简单示例:
int multiply(const int a, const int b)
{
if(a >= INT_MAX || B >= INT_MAX)
return 0;
else
return a*b;
}
Run Code Online (Sandbox Code Playgroud)
我可以检查输入值是否大于限值,但如何检查结果是否超出限制?很有可能a = INT_MAX - 1和b = 2.由于输入完全有效,它将执行未定义的代码,这使得我的程序毫无意义.这意味着在此之后执行的任何代码都是随机的,最终可能导致崩溃.那么在这种情况下如何保护我的程序呢?