我正在处理一段代码,我被一个疑问攻击:如果我为该指针分配NULL,分配给指针的内存会发生什么?
例如:
A = new MyClass();
{...do something in the meantime...}
A = NULL;
Run Code Online (Sandbox Code Playgroud)
空间仍然分配,但没有参考.这个空间以后会被释放,它会被重用,它会保留在堆栈中,还是什么?
我想知道我是否可以为私钥设置多个公钥.
可以这样做吗?如果是这样,有什么安全问题!?
如果我基于相同的初始值生成多个密钥对(没有初始向量),那么密钥是否应该"兼容"?
我在从以下方式打开的串口读取一些数据时遇到了一些麻烦.我已经多次使用这个代码实例并且一切正常,但现在,由于某些原因我无法弄清楚,我完全无法从串口读取任何内容.
我能够写,并且所有都在另一端正确接收,但是从未收到回复(正确发送)(不,电缆都可以;))
我用来打开串口的代码如下:
fd = open("/dev/ttyUSB0", O_RDWR | O_NONBLOCK | O_NOCTTY);
if (fd == -1)
{
Aviso("Unable to open port");
return (fd);
}
else
{
//Get the current options for the port...
bzero(&options, sizeof(options)); /* clear struct for new port settings */
tcgetattr(fd, &options);
/*-- Set baud rate -------------------------------------------------------*/
if (cfsetispeed(&options, SerialBaudInterp(BaudRate))==-1)
perror("On cfsetispeed:");
if (cfsetospeed(&options, SerialBaudInterp(BaudRate))==-1)
perror("On cfsetospeed:");
//Enable the receiver and set local mode...
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB; /* Parity disabled */
options.c_cflag &= …Run Code Online (Sandbox Code Playgroud) 我有一个数据库,我需要删除一些外键,但我事先不知道外键是否仍然存在.
我找到了一些存储过程(http://forums.mysql.com/read.php?97,218825,247526),但我不想为此创建存储过程.
我试图在存储过程中使用查询,但是我使用"IF EXISTS(SELECT NULL FROM等等)得到错误...
我只能IF EXISTS在存储过程中使用吗?
现在,我唯一可以运行的是
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个
IF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF;
Run Code Online (Sandbox Code Playgroud)
但我得到了 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF' at …
我创建了一个结构来保存一些数据,然后声明一个向量来保存该结构.
但是当我做一个push_back时,我得到该死的段错误,我不知道为什么!
我的结构定义为:
typedef struct Group
{
int codigo;
string name;
int deleted;
int printers;
int subpage;
/*included this when it started segfaulting*/
Group(){ name.reserve(MAX_PRODUCT_LONG_NAME); }
~Group(){ name.clear(); }
Group(const Group &b)
{
codigo = b.codigo;
name = b.name;
deleted = b.deleted;
printers = b.printers;
subpage = b.subpage;
}
/*end of new stuff*/
};
Run Code Online (Sandbox Code Playgroud)
最初,struct没有copy,constructor或析构函数.当我在下面阅读这篇文章时,我添加了它们.
但最终结果是一样的.
这有一个困扰我的地狱!当我第一次将一些数据推入向量时,一切都很顺利.稍后在代码中,当我尝试将更多数据推入向量时,我的应用程序只是段错误!
向量被声明
vector<Group> Groups
Run Code Online (Sandbox Code Playgroud)
并且是我正在使用它的文件的全局变量.其他任何地方都没有外出等等......
我可以将错误追踪到:
_M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage- this->_M_impl._M_start);
Run Code Online (Sandbox Code Playgroud)
在vector.tcc中,当我完成添加/复制最后一个元素到向量....
据我所知.我不需要与复制构造函数有任何关系,因为浅拷贝应该足够了.我甚至没有分配任何空间(但我为字符串做了预备尝试).
我不知道问题是什么!
我在使用gcc 4.1.2的OpenSuse 10.2上运行此代码
由于向后兼容性问题,我真的不急于升级gcc ...
这段代码在我的Windows机器上"完美"运行.我用gcc 3.4.5 mingw编译它没有任何问题...
救命!
--- ...... …
我正在尝试使用mysql,我对如何处理应用程序的连接存有疑问.
我现在正在做的是打开一个连接并保持活着,直到我终止我的程序.我偶尔做一个mysql_ping(),然后用MYSQL_OPT_RECONNECT启动连接.
另一个选择(我能想到),就是在做任何需要我连接数据库的事情之前启动一个新连接,并在完成之后关闭它.
这两种方法的优点和缺点是什么?长连接的"副作用"是什么?最常用的处理方法是什么?
干杯;)
一些额外的细节
在这一点上,我保持连接活着,我不时地ping它到现在它的状态并在需要时重新连接.
尽管如此,当快速连续发生查询时存在一致的并发性时,我得到"服务器已经消失"的消息,并在一段时间后重新建立连接.
我想知道这是否是长时间连接的副作用,或者这只是一个糟糕的mysql服务器配置的情况.
有任何想法吗?
我正在尝试使用指向函数成员的指针,我无法弄清楚它是如何工作的.
我有一个看起来像这样的A级
class A
{
public:
float Plus (float a, float b) { return a+b; }
float Minus (float a, float b) { return a-b; }
float Multiply(float a, float b) { return a*b; }
float Divide (float a, float b) { return a/b; }
};
Run Code Online (Sandbox Code Playgroud)
我想声明一个指向A的指针然后向另一个函数传递一个函数指针给A的一个成员.
有点喜欢这个:
void Will_Get_Function_Pointer(float a, float b, float (A::*pt2Func)(float, float))
{
(...)
}
Run Code Online (Sandbox Code Playgroud)
我会用这样的东西来称呼它
A* myA = new A;
Will_Get_Function_Pointer(1.00,2.00, &myA->Minus)
Run Code Online (Sandbox Code Playgroud)
我不能使用static/const成员,因为在我的最终实现中,A将指向A对象集合中的特定A,其中的对象看起来像这样
vector<A> vecA;
myA = &vecA[xxx]
Run Code Online (Sandbox Code Playgroud)
做到这一点失败了
typedef float (A::*pA)(float x, float y); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用rapidjson创建一个json,并且我在生成正确的输出时遇到了一些意想不到的问题.
我正在创建和填充这样的文档:
Document d;
d.SetObject();
rapidjson::Document::AllocatorType& allocator = d.GetAllocator();
size_t sz = allocator.Size();
d.AddMember("version", 1, allocator);
d.AddMember("testId", 2, allocator);
d.AddMember("group", 3, allocator);
d.AddMember("order", 4, allocator);
Value tests(kArrayType);
Value obj(kObjectType);
Value val(kObjectType);
obj.AddMember("id", 1, allocator);
string description = "a description";
val.SetString(description.c_str(), static_cast<SizeType>(description.length()), allocator);
obj.AddMember("description", val, allocator);
string help = "some help";
val.SetString(help.c_str(), static_cast<SizeType>(help.length()), allocator);
obj.AddMember("help", val, allocator);
string workgroup = "a workgroup";
val.SetString(workgroup.c_str(), static_cast<SizeType>(workgroup.length()), allocator);
obj.AddMember("workgroup", val, allocator);
val.SetBool(true);
obj.AddMember("online", val, allocator);
tests.PushBack(obj, allocator);
d.AddMember("tests", tests, allocator);
// Convert JSON document …Run Code Online (Sandbox Code Playgroud) 我正在使用mongocxx驱动程序,并且正在考虑将 BSON 中给出的查询结果保留为几个对象中的数据持有者,而不是解析 BSON 以检索值然后丢弃它。
“如果”我可以即时编辑 BSON,这将有意义。除了构建器之外,我在bsoncxx驱动程序文档中找不到任何可以让我在构建后操作bsoncxx文档/值/视图/元素的内容。
举个例子,想象我有这样的东西
fruit["orange"];
Run Code Online (Sandbox Code Playgroud)
哪里fruit是一个bsoncxx::document::element
我可以通过使用其中之一来获取该值.get_xxx operators。
我找不到的是类似的东西
fruit["orange"] = "ripe";
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或者构建器背后的想法“只是”创建一个查询以提供给数据库?
我有一个看似简单的问题,我不知道如何解决.
想象一下以下模板方法
template<typename T> void Add(T& var);
Run Code Online (Sandbox Code Playgroud)
专业化可以在容器中添加某些东西(排序).我可以传递POD或更复杂的类型strings,这就是为什么我传递T作为参考.
这个问题是,每当我想用另一个方法的结果调用Add(...)时,例如:
Add(MethodThatReturnsAnInt());
Run Code Online (Sandbox Code Playgroud)
这不起作用,需要一个临时变量来保存结果MethodThatReturnsAnInt().
有没有任何重载方式,Add以便我可以有一个引用传递和非引用传递版本?
template<typename T> void Add(T& var);
template<typename T> void Add(T var);
Run Code Online (Sandbox Code Playgroud)
就std::enable_if在这种情况下,有什么用途?
c++ ×6
json ×2
linux ×2
mysql ×2
bson ×1
c ×1
encryption ×1
foreign-keys ×1
overloading ×1
pki ×1
rapidjson ×1
security ×1
serial-port ×1
struct ×1
templates ×1
vector ×1